首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >修剪Powershell中的最后8个字符

修剪Powershell中的最后8个字符
EN

Stack Overflow用户
提问于 2018-12-05 07:17:15
回答 2查看 0关注 0票数 0

我有这个代码:

代码语言:javascript
复制
$folder = "C:\Folder"
Get-ChildItem $folder | ForEach { 
  .\hi-data-upload-utility uploadDataSetFile `
      -said *********************** `
      -sas ************************ `
      -sid ************************ `
      -dsid &&&&_MCK_STAR_EDI_837_5010_INST `
      -sv 1 `
      -fid SINGLE_FILE `
      -rl 20160116 `
      -f $($_.fullname) `
      -re ‘837 Institutional Claims’ 
  }

如何修剪最后8位数字$($_.fullname)。不包括延期.c5?我只需要在之后的日期部分_STAR。文件夹中的文件都采用以下格式:

代码语言:javascript
复制
00037888_STAR_08302017.c5
EN

回答 2

Stack Overflow用户

发布于 2018-12-05 15:59:07

结果Get-ChildItem包括属性BaseName,即没有扩展名的文件名。

一个范围可以传递给字符串上的索引操作符,负数从末尾开始测量(-1是最后一个字符),返回一个字符数组,这当然可以合并。

所以:

代码语言:javascript
复制
($_.BaseName[-8..-1] -join '')

应该这样~~

票数 0
EN

Stack Overflow用户

发布于 2018-12-05 17:12:44

我找到了你昨天删除的问题的答案,我很快就会发布。

只要一个警告,一旦你获得10k的分数,也可以看到删除的问答。

我建议使用splatting来避免无尽的命令行。要上传具有不同名称的文件,首先需要重命名该文件。

只有当LastWriteTime的日期与文件附件不同时,它才会被重命名和上传。出于测试目的,我只能使用来自pscx的EchoArgss查看命令

代码语言:javascript
复制
## Q:\Test\2018\06\05\SO_50701695.ps1
$FilePath = "C:\Users\AG053989\hi-data-upload-utility-1.6\bin\STAR\"
$Files = Get-ChildItem -Path $FilePath -Filter *.c5 -File 

ForEach($File in $Files) {
    if ($File.BaseName -Match '(\d{8}_STAR_)(\d{8})' ){
        $FileDate = $File.LastWriteTime.ToString('ddMMyyyy')
        if ($FileDate -ne $Matches[2]){
            $NewName = $Matches[1]+$FileDate+$File.Extension
            Rename-Item $File -NewName $NewName
            $UpLoad = Join-Path $FilePath $NewName

            $parms = @{
                'said'= 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
                'sas' = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
                'sid' = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
                'dsid'= 'CHLD_DC_MCK_STAR_EDI_837_5010_INST'
                'sv'  = '1' 
                'fid' = 'SINGLE_FILE'
                'rl'  = $FileDate
                'f'   = $UpLoad
                're'  = 'McKesson Star 837 Institutional Claims'
            }
            EchoArgs .\hi-data-upload-utility uploadDataSetFile @parms
        }
    }
}

Dir之前,脚本输出,dir之后:

代码语言:javascript
复制
> ls *.c5
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2018-06-06     20:03             56 00038307_STAR_05062018.c5
代码语言:javascript
复制
> Q:\Test\2018\06\05\SO_50701695.ps1
Arg 0 is <.\hi-data-upload-utility>
Arg 1 is <uploadDataSetFile>
Arg 2 is <-re:McKesson Star 837 Institutional Claims>
Arg 3 is <-sid:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Arg 4 is <-sv:1>
Arg 5 is <-dsid:CHLD_DC_MCK_STAR_EDI_837_5010_INST>
Arg 6 is <-f:Q:\Test\2018\06\05\00038307_STAR_06062018.c5>
Arg 7 is <-said:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Arg 8 is <-fid:SINGLE_FILE>
Arg 9 is <-rl:06062018>
Arg 10 is <-sas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>

Command line:
"EchoArgs.exe" .\hi-data-upload-utility uploadDataSetFile -re:"McKesson Star 837 Institutional Claims" -sid:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -sv:1 -dsid:CHLD_DC_MCK_STAR_EDI_837_5010_INST -f:Q:\Test\2018\06\05\00038307_STAR_06062018.c5 -said:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -fid:SINGLE_FILE -rl:06062018 -sas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
代码语言:javascript
复制
> ls *.c5
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2018-06-06     20:04             56 00038307_STAR_06062018.c5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档