2015-01-09 127 views
0

有人可以告訴我這個語法有什麼問題嗎?我根本無法得到這個工作:在powershell中將變量傳遞給ren命令

#there is file called MyLog.log inside'logoutput' 
$file='myimage' 
$LogsDestFolder='logoutput' 
Write-Host "Renaming log for $file.bmp" 
ren $LogsDestFolder\MyLog.log $LogsDestFolder\$file.log 

不斷抱怨我不能在'ren'命令內傳遞變量。我試着把單引號或雙引號,沒有任何工作。

不斷收到這樣的:

任志強:不能重命名指定的目標,因爲它代表了路徑或設備名稱。

thx!

+1

從未見過'無法傳遞變量'錯誤,但不應該將路徑傳遞給重命名項目的第二個參數。試試'ren'$ LogsDestFolder \ MyLog.log「」$ file.log「' –

回答

3

這裏的問題很可能是您傳遞參數-NewName的路徑。你的命令轉換爲這個目前:

Rename-Item -Path $LogsDestFolder\MyLog.log -NewName $LogsDestFolder\$file.log 

ren = Rename-Item你可以從Get-Alias ren看到。我運行時得到的實際錯誤是:

ren:因爲指定的目標代表路徑或設備名稱,所以無法重命名。

如果你看一下TechNetRename-Item你的描述下看到-NewName

指定項目的新名稱。只輸入一個名稱,而不是路徑和名稱。如果輸入的路徑與Path參數中指定的路徑不同,則重命名項目會生成錯誤。

由於您已經使用-Path來完成此操作,因此無需爲NewName設置路徑。刪除路徑組件並保留文件名稱,如Ryan建議的。

Rename-Item -Path "$LogsDestFolder\MyLog.log" -NewName "$file.log" 
#or 
Ren "$LogsDestFolder\MyLog.log" "$file.log" 

總是一個好主意,把路徑放在引號中。無論如何,您需要在這種情況下防止解析錯誤。

+0

謝謝@Matt! – gmmo

相關問題