重命名文件中包含曾祖父母,祖父母和父母的文件(不包括Calls文件夹)

时间:2018-12-20 18:10:42

标签: powershell

我已经在网上搜索了类似的解决方案,但仍然无法正常工作。 我想在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每次都可以使用不同的名称)

希望这很有道理。

1 个答案:

答案 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
}