有人能告诉我这个语法有什么问题吗?我根本无法让这个工作:
#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:无法重命名指定的目标,因为它代表路径或设备名称。
THX!
答案 0 :(得分:3)
此处的问题很可能是您将路径传递给参数-NewName
。您的命令目前转换为:
Rename-Item -Path $LogsDestFolder\MyLog.log -NewName $LogsDestFolder\$file.log
ren
= Rename-Item
您可以在Get-Alias ren
看到。我运行时遇到的实际错误是:
ren:无法重命名,因为指定的目标代表路径或设备名称。
如果您查看Rename-Item
-NewName
,则会在-Path
指定项目的新名称。只输入名称,而不是路径和名称。如果输入的路径与Path参数中指定的路径不同,则Rename-Item会生成错误。
由于您已使用Rename-Item -Path "$LogsDestFolder\MyLog.log" -NewName "$file.log"
#or
Ren "$LogsDestFolder\MyLog.log" "$file.log"
执行此操作,因此无需设置NewName的路径。删除路径组件并保留文件名,如Ryan建议的那样。
{{1}}
将路径放在引号中总是一个好主意。在这种情况下,您无论如何都需要防止解析错误。