変数と特殊文字を使用したPowershellの名前変更

変数と特殊文字を使用したPowershellの名前変更

いくつかのファイルの名前を変更しようとしています。パスとファイル名には、, やスペースなどの記号が含まれています[]名前変更コマンドを実行すると、ファイルが見つからないというメッセージが表示されます。

シンボルを含むメイン ファイルと「一時」ファイルがあります。メイン ファイルは削除し、一時ファイルの名前は元のファイルと同じにする必要があります。

私のコードは次のとおりです:

$onlypath = Split-Path -Path $_.FullName
Rename-Item $onlypath + "\TEMP" $_.Name

そして、他の多くの構文をテストしました

Rename-Item -Path "$onlypath\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath"\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath + "\TEMP" -NewName $_.Name 

ファイルがこの場所にないというエラーが毎回発生します。シェルでコマンドを試しましたが、同じエラーが発生しましたが、シンボルの前にエスケープ文字として ` を追加すると機能します。

ご挨拶

答え1

コードを見ると、ファイル名を変更したくないようですが、動く新しいパスに変更します。Rename-Item は、実際に配置されているファイルの名前を変更するためのものです。その後、新しいファイル名を指定します。パスを変更するためのものではありません。

また、ファイルに のような記号が含まれている場合は、の代わりに[,]を指定する必要があります。-LiteralPath-Path

試す

$sourcePath  = 'X:\Somewhere\Here[123]'
$destination = Join-Path -Path $sourcePath -ChildPath 'Temp'
# make sure the destination folder exists
$null = New-Item -Path $destination -ItemType Directory -Force
# get the files and move them to the destination
Get-ChildItem -LiteralPath $sourcePath -File | ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $destination
}

関連情報