需要有關命令的幫助,例如單行,powershell 以洗掉檔案夾我試圖找到一種優雅的方法來按反映日期的檔案夾名稱洗掉檔案夾,但我不能依賴檔案/檔案夾日期元資料屬性。
這是我要解決的問題:我有一個檔案夾,其中有每天存檔的通話錄音,錄音系統會創建檔案夾并用通話錄音填充它們,每天都有一個名為 like format 的檔案夾MM_dd_yyyy。我需要洗掉除最后 7 個檔案夾之外的所有檔案夾。但是,我不能依賴檔案的創建/修改日期。僅使用 powershell 會容易得多。因此,不幸的是,我必須通過針對我需要以相同格式保留的檔案夾的日期測驗檔案名來洗掉檔案夾(MM_dd_yyyy)。我可以使用以下 Windows 命令列獲取基于前 6 天要保留的檔案夾名稱串列:
c:\>powershell $d0=(Get-Date).ToString('MM-dd-yyyy'); $d1=(Get-Date).AddDays(-1).ToString('MM-dd-yyyy'); $d2=(Get-Date).AddDays(-2).ToString('MM-dd-yyyy'); $d3=(Get-Date).AddDays(-3).ToString('MM-dd-yyyy'); $d4=(Get-Date).AddDays(-4).ToString('MM-dd-yyyy'); $d5=(Get-Date).AddDays(-5).ToString('MM-dd-yyyy'); $d6=(Get-Date).AddDays(-6).ToString('MM-dd-yyyy'); $d0; $d1; $d2; $d3; $d4; $d5; $d6
注意:由于公司和域強制執行的安全限制,我需要將其保留在命令單行中,并且不能使用 PS1 power shell 腳本
這將生成要保留的檔案夾名稱,如下所列(于 2021 年 11 月 20 日運行以保留過去 7 天)。
11_20_2021
11_19_2021
11_18_2021
11_17_2021
11_16_2021
11_15_2021
11_14_2021
目的是洗掉任何類似于 11_13_2021、11_12_2021... 等的檔案夾名稱。
我可以逃脫嵌套在Windows bat檔案的回圈,試圖破解這一跑起來,但我試圖找到一種更簡單,可讀性和優雅的一行,讓我這樣做如下:PowerShell的$d=(Get-Date).AddDays(-7).ToString('MM-dd-yyyy'); 然后一些神奇的 powershell 東西來洗掉任何與要保留的檔案夾不匹配的檔案夾。
如果我有辦法提供的檔案夾名稱(MM_dd_yyyy)的(get-date).AddDays(-6)PowerShell命令,并將它回傳一個布林值yes或no,那將是更接近于我要找的。我一直在閱讀,你在管和拔毛,但到目前為止我正在學習,但主要是把它弄得一團糟。任何想法都是最受歡迎的。
我很可能把這一切都弄錯了。約束條件是:
給定命名格式的檔案夾串列MM_dd_yyyy,我需要洗掉/洗掉所有不在最后一周內的檔案夾。
我無法運行 powershell 腳本 .ps1 我可以使用 for 回圈運行 windows bat 或 cmd 檔案,因此我不能依賴檔案日期/時間元屬性的檔案夾,檔案夾中的某些資料可能具有創建/寫入/修改日期與檔案夾名稱一致。我必須依靠檔案夾名稱(MM_dd-yyyy)來洗掉檔案夾。
uj5u.com熱心網友回復:
用于此的 PowerShell 代碼將是:
Get-ChildItem -Path 'RootPath\Where\The\Folders\To\Delete\Are\Found' -Filter '*_*_*' -Directory |
Where-Object { $_.Name -match '\d{2}_\d{2}_\d{4}' } | # filter some more using regex -match
Sort-Object { [datetime]::ParseExact($_.Name, 'MM_dd_yyyy', $null) } | # sort by date
Select-Object -SkipLast 7 | # skip the newest 7 folders
Remove-Item -Recurse -Force # remove the rest
為了安全起見,添加-WhatIf到最后的Remove-Item命令。通過這樣做,代碼實際上不會洗掉任何內容,而是在控制臺中顯示將要洗掉的內容。如果您認為正確,則洗掉-WhatIf以實際洗掉這些檔案夾。
正如Olaf已經評論過的那樣,不要認為使用單行代碼是最好的,因為你最終會得到不再可讀的代碼,并且錯誤極難發現。多行代碼沒有任何懲罰,事實上這是要走的路!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362429.html
