有類似這個問題的類似問題,例如Rename-item: Cannot rename because item at ... does not exist這給出了與我所遇到的相同的錯誤。我的腳本是特定的,因為腳本適用于某些檔案,例如
注意。我在 powershell 腳本方面并不先進
| 檔案 | 重命名 |
|---|---|
| DbBackUpV4.bak | 真的 |
| LongNameUpTo50Chars.bak | 真的 |
| 資料庫[備份]V4.bak | 錯誤的 |
| AnyNameWithChars[].bak | 錯誤的 |
資料庫備份檔案的命名不同,我只是注意到那些帶有
字符的檔案出于好奇而[]產生了錯誤Rename-Item : Cannot rename because item at '' does not exist.我嘗試僅使用其中一個字符[,但出現了另一種型別的錯誤Message:"Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: DbBackUp[be9e-Full.bak"
我還檢查了 Windows 檔案命名規則,這些字符[]用于檔案命名,這讓我得出結論,它必須與 power shell 腳本有關。
$Now = Get-Date -Format "ddMMyyyyhhmmss"
$NewFileName = $FileNameWithoutExtensionShort "_DWArchive_" $Now $num $BackupFileExtention;
$num = $num 1;
if ($NewFileName.Contains("[") -or $NewFileName.Contains("]") -or $NewFileName.Contains("-")) {
#Remove special characters from name before renaming
Log -Message "Remove special characters from name ($NewFileName) before renaming"
$NewFileName = $NewFileName.replace("[", "_").replace("]", "_").replace("-", "_")
}
# if($_.Exists){
# Rename-Item -Path $_.FullName -NewName $NewFileName. #This also fails
# }
Rename-Item -Path $_.FullName -NewName $NewFileName
這是腳本的一部分,它在一個回圈中,$_.FullName 給了我原始檔案的名稱。
我到底錯過了什么?謝謝你的幫助
uj5u.com熱心網友回復:
使用-LiteralPath引數。反而。
文字路徑
指定一個或多個位置的路徑。LiteralPath 的值完全按照鍵入的方式使用。沒有字符被解釋為通配符。如果路徑包含轉義字符,請將其括在單引號中。單引號告訴 PowerShell 不要將任何字符解釋為轉義序列。
-Path與決議一些特殊字符,所以使用 ?,* [并]可能會出現問題。
參考:
關于通配符
重命名專案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363109.html
標籤:电源外壳
