2017-10-16 93 views
0

我試圖重命名一堆子文件夾中的一堆文件。 我希望他們有一個 '前綴',與它們被放置在子文件夾coresponds批量重命名文件,具體取決於它們所在的子文件夾

例:

  • 主文件夾:
    • Subfolder1
    • Subfolder2
    • Subfolder3

Subfolder1中的所有文件應重命名爲「Subfolder1_filename.pdf」,其餘文件夾的文件相同。

$dir = 'C:\Users\user\desktop\testfolder\' 

foreach ($i in $dir){ 
    $foldername = Get-ChildItem $dir -name 
    cd $newdir 
    rename-item -NewName {$foldername + "_" + $_.Name} 
} 

回答

0
$Files = Get-ChildItem -Path $Dir -Recurse -File 

ForEach ($File in $Files) 
{ 
    $FolderName = ((Split-Path -Path $File.FullName -Parent) -split '\\')[-1] 
    $FileName = $File.Name 
    Rename-Item -Path $File.FullName -NewName "${FolderName}_$FileName" 
} 

這將實現根據自己的集裝箱重命名它們,但你需要利用Move-Item如果要移動+重命名,或這種性質的東西。

+0

感謝您的回答! 我收到此錯誤消息,因爲我嘗試了您的代碼。 Rename-Item:無法將參數綁定到參數'Path',因爲它爲null。 在C:\ Users \ user \ desktop \ testfolder \ ps.ps1:16 char:22 + Rename-Item -Path <<<< $ File.FullName -NewName「$ {FolderName} _ $ FileName」 + CategoryInfo :InvalidData:(:) [重命名-項目],ParameterBinding ValidationException + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,男 icrosoft.PowerShell.Commands.RenameItemCommand – user1851594

+0

你捕捉到的文件用'GET-ChildItem' @ user1851594? – TheIncorrigible1

+0

它似乎並不像捕獲這些文件。我試圖縮小代碼下來,只是爲了檢查: '$ DIR = 'C:\用戶\ BIT \桌面\ QGIS_LEG \測試\' $文件= GET-ChildItem $目錄-Recurse -file 回報$文件' – user1851594