麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PowerShell > 正文

用PowerShell刪除N天前或指定日期(前后)創(chuàng)建(或修改)的文件

2020-03-26 19:07:24
字體:
供稿:網(wǎng)友

本來想用批處理的,想想算時(shí)間太麻煩了……

立馬安裝PowerShell看幫助文檔,里面有個(gè)例子:

以下命令查找 Program Files 文件夾中上次修改日期晚于 2005 年 10 月 1 日并且既不
小于 1 MB 也不大于 10 MB 的所有可執(zhí)行文件(測試發(fā)現(xiàn)沒法運(yùn)行-_-!):

Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object `
-FilterScript {($_.LastWriteTime -gt "2005-10-01") -and ($_.Length -ge 1m) `
-and ($_.Length -le 10m)}

改了一下成為下面的,以刪除D:/test及子目錄里10天前創(chuàng)建的文件為例,測試請謹(jǐn)慎!
因?yàn)閮?nèi)容太長顯示成多行,實(shí)際上是一行。用“`”字符作為延續(xù)符(雙引號內(nèi)的,是重
音符不是單引號),相當(dāng)于vbs的“_”,它告訴Windows PowerShell下一行是延續(xù)部分,
它在整行如果不換行就無法置于庫中這種情況下有用。只允許將表達(dá)式作為管道的第一
個(gè)元素。

一行命令取得過期文件列表:
Get-ChildItem -Path D:/test -Recurse -ErrorAction:SilentlyContinue | `
Where-Object -FilterScript {(((get-date) - ($_.CreationTime)).days -gt 10 `
-and $_.PsISContainer -ne $True)} | Select-Object FullName

一行命令刪除過期文件:
Get-ChildItem -Path D:/test -Recurse -ErrorAction:SilentlyContinue | `
Where-Object -FilterScript {(((get-date) - ($_.CreationTime)).days -gt 10 `
-and $_.PsISContainer -ne $True)} | Remove-Item

一行命令刪除過期文件(包括刪除只讀、隱藏):
Get-ChildItem -Path D:/test -Force -Recurse -ErrorAction:SilentlyContinue | `
Where-Object -FilterScript {(((get-date) - ($_.CreationTime)).days -gt 10 `
-and $_.PsISContainer -ne $True)} | Remove-Item -Force
當(dāng)然,可以用別名簡寫命令。


或者先在Types.ps1xml文件里找到System.IO.FileInfo,增加Age成員:

<Name>System.IO.FileInfo</Name>
   <Members>
       <ScriptProperty>
           <Name>Age</Name>
           <GetScriptBlock>
              ((get-date) - ($this.creationtime)).days
           </GetScriptBlock>
       </ScriptProperty>
   </Members>

添加的內(nèi)容是從<ScriptProperty>到</ScriptProperty>,修改后以后不用再加。

腳本內(nèi)容:

ForEach ($file in Get-ChildItem D:/test/* -Force -Recurse `-ErrorAction:SilentlyContinue)  {    if (($file).Age -ge 10 -and $file.PsISContainer -ne $True)      {$file.Delete()}  }

這里不能使用{Remove-Item -Force "$file"}

腳本擴(kuò)展名是.ps1,擴(kuò)展名里的是數(shù)字1。

-gt是大于,-ge是大于或等于,其他看幫助。

如果PSIsContainer屬性為真那意味著處理的是文件夾而不是文件。

-Force是包括只讀、隱藏等系統(tǒng)文件,用了它之后最好用-ErrorAction。

-ErrorAction:SilentlyContinue作用是不顯示錯(cuò)誤繼續(xù)執(zhí)行腳本,比如遞歸時(shí)遇到
System Volume Information等無權(quán)限進(jìn)入的目錄就會出錯(cuò)。

查找指定日期前創(chuàng)建的文件:

Get-ChildItem -Path D:/test -Force -Recurse -ErrorAction:SilentlyContinue | `Where-Object -FilterScript {($_.CreationTime -gt "2011-01-01") -and `($_.PsISContainer -ne $True)} | Select-Object FullName

查找指定日期前修改的文件:

Get-ChildItem -Path D:/test -Force -Recurse -ErrorAction:SilentlyContinue | `Where-Object -FilterScript {($_.LastWriteTime -gt "2011-01-01") -and `($_.PsISContainer -ne $True)} | Select-Object FullName

如果要?jiǎng)h除,Select-Object FullName改成Remove-Item -Force

指定日期的用批處理還是很方便,如果要指定刪除N天前的舊文件就麻煩了點(diǎn),
下面的示例是用bat刪除指定日期修改過的文件。注意是修改,不是創(chuàng)建,只
有dir /tc才能查看到文件創(chuàng)建時(shí)間,默認(rèn)dir都是dir /tw

發(fā)信人: nwn (Lie), 信區(qū): DOS
標(biāo)  題: Re: (for命令)批量刪除某一時(shí)間段內(nèi)創(chuàng)建的文件?
發(fā)信站: 水木社區(qū) (Sat Jun  7 08:39:39 2008), 站內(nèi)

@echo offcd /d 你的目錄for %%f in (*) do if "%%~tf" gtr "2008-04-01" del "%%f"

如果要包含子目錄,使用 for /r . %%f in ....

【 在 justzhou (玉樹臨風(fēng)) 的大作中提到: 】
: 比如要?jiǎng)h除某目錄下2008-04-01后創(chuàng)建的所有的文件。。

 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美日韩色片 | 欧美韩国一区 | 精品一区二区三区在线观看国产 | jizzjizz中国人少妇中文 | 日韩精品中文字幕在线播放 | 欧美成人高清在线 | www.国产免费 | 成人免费看片a | 在线播放黄色片 | 久久国产中文 | 国产一级做a爰片在线看 | 免费毛片在线视频 | 精品国产乱码久久久久久丨区2区 | 精品一区二区三区在线播放 | 高清国产午夜精品久久久久久 | 中文字幕电影免费播放 | 狠狠操夜夜爱 | 久久精品国产99久久久古代 | 亚洲二区免费 | 久久久久久久久久久久久久国产 | 成年免费视频黄网站在线观看 | 香蕉成人在线观看 | 国产精品99久久久久久久vr | 国产88久久久国产精品免费二区 | 久久久久久久久浪潮精品 | 国产成人在线免费视频 | 91看片淫黄大片欧美看国产片 | 国产精品久久久久一区二区 | 国产成人免费精品 | 精选久久 | 日本中文不卡视频 | 最新亚洲国产 | 国产精品毛片无码 | 媚药按摩痉挛w中文字幕 | 亚洲精品com | 少妇一级淫片高潮流水电影 | 黄色片免费看网站 | 久久青草影院 | 色淫视频 | 免费a级毛片永久免费 | 草久在线 |