2012-10-24 2 views
0

IF-ELSE 문이 잘못되어 어리석은 두뇌가 도대체 ​​그것이 무엇인지 파악할 수 없습니다! 이 실행될 때, 그러나재귀 디스플레이가 올바른 형식을 나타내지 않습니다.

Directory: E:\LogArchive\W3SVC100 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-----  29/03/2007  15:03  663 ex070329.log.gz 
-----  30/03/2007  15:44  860 ex070330.log.gz 
-----  03/04/2007  13:41  354 ex070403.log.gz 
-----  05/04/2007  14:00  704 ex070405.log.gz 
-----  10/04/2007  17:56  921 ex070410.log.gz 
-----  11/04/2007  14:55  987 ex070411.log.gz 
-----  12/04/2007  15:12  539 ex070412.log.gz 

: 출력의

get-childitem E:\LogArchive -recurse | where-object {$_.lastwritetime -gt 60} 

형식 : 나는 자신에 아래의 코드를 실행하면

그것은 아래의 형식이 각 디렉토리와 파일을 보여줍니다 아래 코드와 같이 폴더 구조와 날짜는 모두 표시되지 않습니다.

W3SVC100 
W3SVC102 
W3SVC105 
W3SVC106 
W3SVC1108492480 
W3SVC112 
W3SVC116 
W3SVC118 
W3SVC1209046175 
W3SVC123110214 
W3SVC1262336480 
W3SVC127 
W3SVC134 
W3SVC134239081 
W3SVC137 
W3SVC139 
W3SVC145 
W3SVC147 
W3SVC1499983181 
W3SVC15 

어떻게해야합니까? 다음 스크립트가 실행될 때 첫 번째 결과가 표시됩니다. 따라서 수정 된 날짜, 마지막 쓰기 시간 등을 모두 표시하십시오. 날짜 범위에 파일이없는 경우 현재 메시지를 입력하고 있는데 메시지가 표시됩니다. 그러나 anyfiles를 찾은 경우 첫 번째 출력 유형에 나열된대로 표시합니다 ...

나는 실제로 고장이 라인에 생각하지만 수정하는 방법을 알아낼 수 없습니다

if ($runchilditem.lastwritetime -gt DateToCompare) 

...... 사실 - 내가 CSV 출력을 넣을를 - 어떤 아이디어를 어떻게 할 수 이 작업을 수행?

CODE : 나는 당신의 필요를 이해한다면

$path = Read-Host "Please enter the path of the folder yu wish to check - this will check sub-folders as well" 
Write-Host "`n" 
$days = Read-Host "Please enter in number of DAYS you wish to go back" 

$DateToCompare = (Get-Date).AddDays(-$days) 

$runningtrue = Get-ChildItem $path -Recurse | where-object {$_.lastwritetime -gt $DateToCompare} 

Write-Host "`n" 
$runchilditem = @(Get-ChildItem $path -Recurse) 
    if ($runchilditem.lastwritetime -gt DateToCompare) 
     { 
      Write-Host "No Files Matching Date Criteria Found" 
     } 
    else 
     { 
      $runningtrue 
     } 
+0

그래서 당신은 단지 지정하거나 표시 날짜보다 최신 파일을 표시 할 메시지가 최근에 없으면? – EBGreen

+0

안녕하세요, 그렇다면 파일이 90 일 이상 지나면 그 파일을 표시하십시오. – lara400

답변

1

, 여기에 내가 그것을 할 것입니다 방법 :

$path = Read-Host 'Path' 
[int]$dayDiff = Read-Host 'Number of days to go back' 
$offset = $dayDiff * -1 
$files = Get-ChildItem $path -Recurse | Where-Object{$_.LastWriteTime -gt (Get-Date).AddDays($offset)} 
if(($files.Count -eq 0) -OR ($files -eq $null)){ 
    'There are no files after {0} in {1}' -f (Get-Date).AddDays($offset), $path 
}else{ 
    $files 
    $files | Export-CSV C:\PATH\TO\FILE.csv -NoTypeInfo 
} 
+0

거의 거기에서 생각합니다. * 명령에서 *를 실행하면 오류가 발생합니다. 난 단지 90 일 이상인 (또는 그 이상) 말을하는 파일 (그리고 그 파일이있는 폴더)의 결과를 표시하려고합니다. – lara400

+1

그래, 나는 내 머리 꼭대기에서하고 있었다. 편집 내용이 필요한지 확인하십시오. – EBGreen

+0

브릴리언트 - 정확히 내가 필요한 것입니다! – lara400

관련 문제