使用變數和特殊字元的 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 

每次都會出現錯誤,該文件不在這個位置。我在 shell 中嘗試了該命令,但出現了相同的錯誤,但如果我在符號之前添加 ` 作為轉義字符,它就會起作用。

問候

答案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
}

相關內容