2017-10-16 10 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、M icrosoft.PowerShell.Commands.RenameItemCommand – user1851594

+0

あなたは、 'は、Get-ChildItem' @ user1851594でファイルをキャプチャしましたか? – TheIncorrigible1

+0

ファイルをキャプチャしているようではありません。私はちょうどチェックするために、ダウンコードを狭めてみました: '$ DIR = 'C:\ Users \ユーザーデスクトップ\ QGIS_LEG \テスト\ \ BIT' $ファイルが=には、Get-ChildItemコマンドレット$ DIR -Recurse -file リターン$ファイル' – user1851594

関連する問題