2016-10-31 2 views
0

안녕하세요 Powershell의 새로운 기능으로 기존 스크립트를 도살하거나 전에 bash로 작업했습니다.Powershell with Directories

나는 하나의 기준으로 모든 디렉토리를 나열한 다음 그 내용에 대해 칭찬을 시도하고 있습니다.

기본적으로 처리 된 모든 dir을 반복적으로 검색하고 31 일 동안 모든 항목을 제거하고 싶습니다. 나는 아래 또는 그냥 항목으로 작업하려고

PS C:\Users\mark.hodgson\Desktop\New folder> echo $dirs 

FullName               
--------               
C:\Users\mark.hodgson\Desktop\New folder\Folder1\FolderA\Processed 
C:\Users\mark.hodgson\Desktop\New folder\Folder1\FolderB\Processed 
C:\Users\mark.hodgson\Desktop\New folder\Folder2\Processed   
C:\Users\mark.hodgson\Desktop\New folder\Folder3\Processed   
C:\Users\mark.hodgson\Desktop\New folder\Folder4\Processed   
C:\Users\mark.hodgson\Desktop\New folder\Folder5\Processed 

하지만 때 나는 다음과 같이 목록이 좋아 보인다 $ DIRS 에코 때

$limit = (Get-Date).AddDays(-31) 
$path = "C:\Users\mark.hodgson\Desktop\New folder" 
$dirs = Get-ChildItem $path -Recurse -Directory| Where-Object {$_.PSIsContainer -eq $true -and $_.Name -match "Processed"} |select-object Fullname 

: 내가 너무에 대한이 아래 명령입니다 ls는 내 바탕 화면에서 모든 폴더를 반환하거나 삭제합니다!

$dirs | ForEach-Object { Get-ChildItem -Recurse -Force | Where-Object { !$_.PSIsContainer -eq $_.LastWriteTime -lt $limit } | Remove-Item -Force } 

같은 나는 $를위한에서 DIR $ DIRS

를 사용하는 경우 내가 잘못 여기에 기초를 받고되어야합니다! 나는 경로를 하드 코딩 할 수 있지만 적절한 일을 사랑하는 것입니다.

건배,

+0

$ _ PSIsContainer -eq $ _ LastWriteTime -lt $ 제한? 귀하의 상태가 잘못되었습니다. -eq를 -and로 바꾸십시오. –

+0

위도 줄의'-eq'는'-and' 일 것입니다. 제거 항목에 테스트하는 동안'-whatif'를 추가 할 것입니다. – LotPings

+0

'!'는'-not'이어야합니다; 또는'-eq' (equals)를'-ne' (같지 않음)으로 대체 할 수 있습니다. http://ss64.com/ps/syntax-compare.html – JohnLBevan

답변

0

당신은 ForEach-Object 체내 현재 파이프 라인 항목을 참조 할 필요가

hodgm :!..

$dirs | ForEach-Object { Get-ChildItem $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt $limit } | Remove-Item -Force } 
+0

완벽 함 (위의 설명에서 -eq를 -and로 대체 함과 함께)을 정렬했습니다! – hodgm

+0

많이 감사드립니다 : D – hodgm

+0

@hodgm 내 대답이 문제를 해결할 수 있다면 왼쪽에있는 체크 표시를 클릭하여 허용으로 표시하십시오. –

관련 문제