繁体   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