![](/img/trans.png)
[英]PowerShell: Script won't count files older than 30 from last modified date
[英]Powershell script to rename Files adding Last Modified date to name, script won't run in sub directories
我有一個舊服務器存檔,並希望通過將上次修改日期添加到文件名來重命名所有文件。 目錄結構中有很多層文件夾。
我嘗試了幾個不同版本的腳本,第一級工作正常,然后在子文件夾上出錯。
錯誤:
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) }
謝謝
畢竟我已經能夠用 Windows PowerShell (5.1) 重現它,但我無法在 PowerShell Core 7.2.3 中重現它。 我不太確定這里的問題是什么,但這個答案應該只被認為與 PowerShell 核心相關。 稍后我將嘗試重新訪問,看看我是否無法弄清楚 PowerShell 5.1 發生了什么。
您將希望將-File
參數與Get-ChildItem
一起使用。 以下應該對您只返回嵌套文件有用,這樣您就不會意外地嘗試重命名目錄:
Get-ChildItem -Recurse -File | Foreach-Object {
Rename-Item -WhatIf $_ -NewName ( "{0}-{1}{2}" -f $_.BaseName, $_.LastWriteTime.ToString('"Last_Mod_Date_"mmddyyyy'), $_.Extension )
}
我在Rename-Item
中添加了一個-WhatIf
參數,一旦您確認正確的文件列表將被重命名,您可以刪除它以實際進行重命名操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.