我在许多目录中有大量文件,具有这种命名约定:
" BU1_KCG_RANDOM_030515.csv"等
我需要删除第16和第17个字符。所以新的文件名是" BU1_KCG_RANDOM_0515.csv"。
如何相应地重复多个目录重命名?
到目前为止,我已经得到了以下内容,但我不确定接下来会发生什么。
Get-ChildItem -Filter *.csv -Recurse | Rename-Item -NewName {$_.Name..................}
答案 0 :(得分:1)
使用-replace:
Get-ChildItem -Filter *.csv -Recurse |
foreach { $_ | rename-item -newname ($_.Name -replace '(.{15})..(.+)','$1$2') }
答案 1 :(得分:0)
比特基本,例如,不检查文件是否已经重命名,但是应该让你进入下一步
case
when (missing(a.string1) and missing(b.string1)) then 300
else compged(a.string1,b.string1)
end as compged_11,
/* do the same for combinations 12, 21 and 22 */
MIN(calculated compged_11,
calculated compged_12,
calculated compged_21,
calculated compged_22) < 200
,其中
gci -filter *.csv -rec | % { Rename-Item $_ -newname ($_.Name.substring(0,15) + $_.Name.substring(17)) }
答案 2 :(得分:0)
我更喜欢mjolinor's answer,但您可以随时使用PowerShell以不同的方式执行操作。由于您可以像char数组一样索引字符串,因此我们可以使用一个小数组表示法来获取您想要的字符。
$oldname = "BU1_KCG_RANDOM_030515.csv"
$newname = -join $oldname[0..14 + 17..($oldname.Length)]
$newname
BU1_KCG_RANDOM_0515.csv
我们还需要使用-join
将数组转换回字符串。