PowerShell로 N 이전 또는 지정된 날짜(전후)에 생성되거나 수정된 파일을 삭제합니다.

일괄 처리하려고 했는데 시간 계산이 너무 귀찮아서...
바로 PowerShell을 설치하여 도움말 문서를 보십시오.
다음 명령은 Program Files 폴더의 마지막 수정 날짜가 2005년 10월 1일보다 늦고 그렇지 않은 경우 찾습니다.
1MB 이하도 10MB 미만의 모든 실행 파일(테스트에서 실행할 수 없음 - _-!):
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 구성원 추가:
System.IO.FileInfo
  
      
           Age
          
              ((get-date) - ($this.creationtime)).days
          

      
  

추가된 내용은 에서 로 변경된 후 추가할 필요가 없습니다.
스크립트 내용:

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는 읽기 전용, 숨기기 등의 시스템 파일을 포함하며, 사용한 후에는 -Error Action을 사용하는 것이 좋습니다.
-ErrorAction:SilentlyContinue 역할은 오류를 표시하지 않고 스크립트를 계속 실행하는 것입니다. 예를 들어 귀속 시
System Volume Information 등 액세스할 수 없는 디렉토리에서 오류가 발생합니다.
지정된 날짜 전에 만든 파일을 찾습니다.

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
삭제하려면 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), 역내

@echo off
cd /d  
for %%f in (*) do if "%%~tf" gtr "2008-04-01" del "%%f"
하위 디렉토리를 포함하려면 for/r.%% 를 사용합니다.f in ....
[justzhou(옥수임풍)의 대작에서 언급했다:]
: 예를 들어 어떤 디렉터리에서 2008-04-01 이후에 만든 모든 파일을 삭제해야 합니다.

좋은 웹페이지 즐겨찾기