簡體   English   中英

Powershell 腳本重命名文件添加最后修改日期到名稱,腳本不會在子目錄中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM