【发布时间】:2022-08-19 13:51:52
【问题描述】:
我有一个旧服务器存档,并希望通过将上次修改日期添加到文件名来重命名所有文件。 目录结构中有很多层文件夹。
我尝试了几个不同版本的脚本,第一级工作正常,然后在子文件夹上出错。
错误:
Rename-Item : Cannot rename because item at \'Stand.doc\' does not exist.
At line:1 char:42
+ ... ch-Object { Rename-Item $_ -NewName (\"{0}-{1}{2}\" -f $_.BaseName,$_.L ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand*
Stand.doc 是来自子目录的文件。
半工作脚本:
Get-ChildItem -recurse |Foreach-Object { Rename-Item $_ -NewName (\"{0}-{1}{2}\" -f $_.BaseName,$_.LastWriteTime.ToString(\'\"Last_Mod_Date_\"mmddyyyy\'),$_.Extension) }
谢谢
-
由于您只想重命名文件,您应该为
Get-ChildItem添加开关参数-File。 ;-) -
如果您已经阅读了我的答案,我已经对其进行了更新。我最初在 PS Core 中尝试过,但我可以在 PowerShell 5.1(Windows 中的版本)中重现该问题。我还没有 5.1 的解决方案,但我稍后会尝试重新访问。
标签: powershell rename