国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - PowerShell - 用PowerShell刪除N天前或指定日期(前后)創建(或修改)的文件

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

2020-07-07 11:51腳本之家 PowerShell

這篇文章主要介紹了用PowerShell刪除N天前或指定日期(前后)創建(或修改)的文件,需要的朋友可以參考下

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

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

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

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天前創建的文件為例,測試請謹慎!
因為內容太長顯示成多行,實際上是一行。用“`”字符作為延續符(雙引號內的,是重
音符不是單引號),相當于vbs的“_”,它告訴Windows PowerShell下一行是延續部分,
它在整行如果不換行就無法置于庫中這種情況下有用。只允許將表達式作為管道的第一
個元素。

一行命令取得過期文件列表:
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
當然,可以用別名簡寫命令。


或者先在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>

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

腳本內容:

?
1
2
3
4
5
6
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"}

腳本擴展名是.ps1,擴展名里的是數字1。

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

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

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

-ErrorAction:SilentlyContinue作用是不顯示錯誤繼續執行腳本,比如遞歸時遇到
System Volume Information等無權限進入的目錄就會出錯。

查找指定日期前創建的文件:

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

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

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

如果要刪除,Select-Object FullName改成Remove-Item -Force

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

發信人: nwn (Lie), 信區: DOS
標  題: Re: (for命令)批量刪除某一時間段內創建的文件?
發信站: 水木社區 (Sat Jun  7 08:39:39 2008), 站內

?
1
2
3
@echo off
cd /d 你的目錄
for %%f in (*) do if "%%~tf" gtr "2008-04-01" del "%%f"

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

【 在 justzhou (玉樹臨風) 的大作中提到: 】
: 比如要刪除某目錄下2008-04-01后創建的所有的文件。。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频一区在线播放 | 国产日韩精品久久 | 粉嫩欧美一区二区三区高清影视 | 男女免费视频 | 亚洲一区在线视频 | 一级黄色免费网站 | 中文字幕在线资源 | 日韩不卡二区 | 国产精品三级久久久久久电影 | 免费在线a | 日本一区二区三区免费观看 | 亚洲国产精品一区二区第一页 | 久久久久国产精品一区二区 | 欧美一级全黄 | 色视频www在线播放国产人成 | 国产91精品在线 | 国产精品初高中精品久久 | 亚洲免费在线播放 | 欧美视频在线观看 | 免费看黄色电影 | 一级黄色大片 | 国产99精品 | jizz亚洲女人高潮大叫 | 国产精品欧美一区二区三区不卡 | 欧美日韩一区二区在线 | 欧美精品99| 免费观看黄色大片 | 久久久性色精品国产免费观看 | 欧美视频在线看 | 亚洲欧美中文字幕 | 成人三区| 成人午夜影院 | 91精品啪aⅴ在线观看国产 | 中文字幕在线视频观看 | 亚洲欧美激情精品一区二区 | 在线a人片免费观看视频 | 爱爱综合网 | 成人免费一区二区三区视频网站 | 91中文在线观看 | 久久国产精品系列 | 日韩三级在线免费观看 |