
いくつかのファイルの名前を変更しようとしています。パスとファイル名には、, やスペースなどの記号が含まれています[
。]
名前変更コマンドを実行すると、ファイルが見つからないというメッセージが表示されます。
シンボルを含むメイン ファイルと「一時」ファイルがあります。メイン ファイルは削除し、一時ファイルの名前は元のファイルと同じにする必要があります。
私のコードは次のとおりです:
$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
}