2017-03-28 5 views
1

Andreasで始まり、[ and ]を含むいくつかのフォルダを持つフォルダE:\ Tjuvenがあります。PowerShellのファイル名とフォルダ名の括弧の処理

これらのフォルダには、フォルダ名に名前を変更する2つのファイルがあります。これらのファイルには、名前に[ and ]も含まれています。

だから私はこれを書いた:

$folderslist = Get-ChildItem -Path E:\Tjuven -Filter Andreas* 
$folders = $folderslist.Name 
ForEach ($folder in $folders) { 
    $fillista = Get-ChildItem -Path E:\Tjuven\$folder 
    $filer = $fillista.Name 
    ForEach ($fil in $filer) { 
     $filslut = $fil.Substring($fil.Length-3) 
     Rename-Item "E:\Tjuven\$folder\$fil" "E:\Tjuven\$folder\$folder.$filslut" 
    } 
} 

フォルダがそれらで[ or ]を持っていないとき、これは完璧に動作します。

リテラルパスを使用してフォルダなどを検索することはできますが、複数のファイルやフォルダに特殊文字[ and ]を使用してスクリプトを作成すると、そのデータを処理する方法がわかりません。

誰でもこの作品を作成する方法はありますか? このスクリプトをよりスムーズに書くことができたら、私にもヒントを教えてください。

答えて

2

Get-ChildItemおよびRename-Itemは、ワイルドカード文字として大括弧を使用します。代わりに、-Pathの利用-LiteralPath:

$root = "F:\test"  
Get-ChildItem -Path $root | % { 
    $dirName = $_.Name 
    $files = Get-ChildItem -LiteralPath $_.FullName 
    $files | % { 
     Rename-Item -LiteralPath $_.FullName -NewName "$dirName$($_.Extension)" 
    } 
} 

説明here

関連する問題