Powershell 1.0 - 当脚本位于不同的目录中时,重命名文件失败

时间:2010-06-18 19:11:29

标签: powershell scripting powershell-v1.0

我正在尝试批量重命名旧的日志文件,但是当脚本存储在与日志文件相同的文件夹中时,脚本仅适用于我。这是代码:

cls
$file = gci E:\logs |? {$_.extension -eq ".log" |% {rename-item $_ ($_.Name + ".old")}

当我从E:\logs运行此脚本时,它运行正常。但是,当我从C:\ Scripts运行此脚本时,它给了我这个错误:

Rename-Item: Cannot rename because item at 'my.log.file.log' does not exist.
At C:\Scripts\rename-script.ps1:2 char:92
+ $file = gci E:\logs |? {$_.extension -eq ".log" |% {rename-item $_ ($_.Name + ".old")}
    + CategoryInfo          : InvalidOperation (:) [Rename-Item], FSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

我也尝试将Move-Item命令与-literalpath开关一起使用,但结果相同

2 个答案:

答案 0 :(得分:5)

Name属性为您提供没有路径的文件名。您可能希望使用FullName属性。您也可以简化此操作,因为Rename-Item接受源文件名的管道输入:

gci E:\logs *.log | rename-item -newname {$_.FullName + ".old"}

另请注意,gci(get-childitem)允许您使用-Filter parmater过滤其输出的项目。此参数是位置参数(2),因此您甚至不必指定参数名称。

答案 1 :(得分:0)

听起来它没有找到它,因为它不在dos路径中。

viperjay