我已经在网上搜索了类似的解决方案,但仍然无法正常工作。 我想在pdf文件名中包括曾祖父母,祖父母和父母文件夹名称(忽略电话文件夹),如下所示:
当前路径:
C:\AttachedFiles\Test01\Calls\1848953\1\engineer_jobsheet.pdf
C:\AttachedFiles\Teoo233\Calls\185864\3\engineer_jobsheet.pdf
要重命名pdf文件,如下所示(不包括通话文件夹):
Test01_1848953_1_engineer_jobsheet.pdf
Teoo233_185864_3_engineer_jobsheet.pdf
我从这里开始,将pdf文件重命名为1_engineer_jobsheet.pdf。
Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse | Rename-Item -NewName {$_.Directory.Name+'_'+$_.Name}
除了calls文件夹名称外,谁能为我指出正确的方法(记住,test01 / Teoo233每次都可以使用不同的名称)
希望这很有道理。
答案 0 :(得分:1)
如果所有路径都具有相同数量的文件夹,则可以使用-split
。
请尝试使用“ \”字符分隔路径,然后根据需要将其合并。像下面这样...
$directory = Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse
Foreach($file -in $directory){
$string = $file.fullname -split "\\" #splits path
$newstring = $string[2]+"_"+$string[4]+"_"+$string[5]+"_"+$string[6] #recreates string
Rename-Item $file.fullname -NewName $newstring
}
或
Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse | %{
[string]$path = $_.fullname
$string = $path -split "\\" #splits path
$newstring = $string[2]+"_"+$string[4]+"_"+$string[5]+"_"+$string[6] #recreates string
Rename-Item $path -NewName $newstring
}