我有这段代码:
$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’
}
如何修剪$($_.fullname)
的最后8位数字。不包括广告.c5
?我只需要_STAR
之后的日期部分。文件夹中的文件都采用以下格式:
00037888_STAR_08302017.c5
答案 0 :(得分:4)
Get-ChildItem
的结果包含属性BaseName
,即没有扩展名的文件名。
一个范围可以传递给字符串的索引操作符,负数从末尾开始测量(-1是最后一个字符),返回一个字符数组,当然可以合并。
所以:
($_.BaseName[-8..-1] -join '')
应该这样做。
答案 1 :(得分:1)
如Richard所述,Basename属性将提供不带扩展名的名称。您可以使用substring方法获取8个字符,如下例所示,将从文件的基本名称中显示日期(最后8个字符)。
dir *.c5 | %{$_.BaseName.substring(($_.BaseName.length)-8)}
此外,快速检查对象提供的内容
dir *.c5 |select -First 1 | select *
答案 2 :(得分:0)
我对你昨天删除的问题有一个答案,我很快就会发布。
只是一个警告,一旦你获得10k的分数,也可以看到删除Q& A.
我建议使用splatting来避免无休止的命令行。 要上传具有不同名称的文件,首先需要重命名该文件。
仅当LastWriteTime的日期与文件附件不同时,才会重命名并上传 出于测试目的,我只使用pscx
中的EchoArgss查看命令## 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之后:
> ls *.c5
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-06-06 20:03 56 00038307_STAR_05062018.c5
> 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
> ls *.c5
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-06-06 20:04 56 00038307_STAR_06062018.c5