簡體   English   中英

在Powershell中將變量傳遞給ren命令

[英]passing variables to ren command in powershell

有人可以告訴我這種語法有什么問題嗎? 我根本無法使它正常工作:

#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'命令中傳遞變量。 我嘗試用單引號或雙引號引起來,但沒有任何效果。

繼續得到這個:

ren:無法重命名指定的目標,因為它表示路徑或設備名稱。

謝謝!

這里的問題很可能是您將路徑傳遞到了-NewName參數中。 您的命令當前翻譯為:

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

ren = Rename-Item ,您可以從Get-Alias ren看到。 運行此命令時得到的實際錯誤是:

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

如果您查看TechNetRename-Item您將在-NewName的描述下-NewName

指定項目的新名稱。 僅輸入名稱,而不輸入路徑和名稱。 如果您輸入的路徑與Path參數中指定的路徑不同,則Rename-Item會生成錯誤。

無需為NewName設置路徑,因為您已經使用-Path 刪除路徑組件,並保留建議的文件名,如Ryan所示。

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

將路徑用引號引起來總是一個好主意。 無論如何,您都需要防止解析錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM