programing

파일/폴더의 수정 날짜 찾기

subpage 2023. 7. 28. 22:07
반응형

파일/폴더의 수정 날짜 찾기

저는 PowerShell이 매우 생소하며, 파일의 수정 날짜를 알려주는 스크립트를 만드는 데 도움을 받을 수 있기를 바랍니다.

저는 PowerShell에 대해 더 많이 알고 싶습니다. 왜냐하면 저는 많은 것을 요구하고 있기 때문입니다(이번 주 저의 모든 자유 시간은 PowerShell을 더 잘 배우기 위해 할애될 것입니다).이 방법을 어디서 배워야 하는지 알려주는 것도 큰 도움이 될 것입니다.

여기 완전한 런다운이 있습니다.특정 백업이 수행되었는지 확인하기 위해 90개의 서로 다른 저장소에 있는 컴퓨터 목록을 확인하는 보고서를 매일 실행해야 합니다.수정된 날짜는 백업이 수행되었는지 여부를 알려주고 이전 날짜로 설정됩니다.

수정된 날짜가 어제일 경우 출력이 필요하지 않습니다.어제가 아니라면 PowerShell 창 또는 텍스트 파일 중 더 쉬운 것으로 출력했으면 합니다.

또한 90개의 각 스토어에 대해 동일한 출력 기준으로 폴더가 7일 이내인지 확인해야 합니다.내가 가지고 있는 아이디어는 각 가게마다 이와 같을 것입니다.

스토어 1의 경우:

Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
   then do nothing
if date does not equal yesterday
   then output "Test did not backup"

check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
   then do nothign
if date equals >7 days old
   then output "test did not backup"

제 연구 노력을 증명하지 못해서 죄송합니다. 저는 파워셸에 처음 와서 이 작업을 완료해야 하는 마감 시간에 있었습니다.저는 어제부터 이 대본으로 필요한 모든 것을 하는 법을 배웠습니다.@Keith가 저를 올바른 길로 인도해 주셔서 감사합니다.저는 결과가 거짓인 위치만 출력한다는 제 목표를 달성하기 위해 다음 코드를 사용하게 되었습니다.

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
    'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}


$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
    'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}

Get-Item 또는 Get-ChildItem 명령을 실행하면 시스템이 출력됩니다.IO.파일 정보 및 시스템.IO.디렉토리이 정보를 포함하는 개체에 정보를 제공합니다. 예:

Get-Item c:\folder | Format-List  

또는 다음과 같이 속성에 직접 액세스할 수 있습니다.

Get-Item c:\folder | Foreach {$_.LastWriteTime}

마지막 쓰기 시간을 기준으로 폴더 및 파일 필터링을 시작하려면 다음 작업을 수행합니다.

Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}

단일 파일에서 수정된 날짜를 가져오려면 다음을 수행합니다.

$lastModifiedDate = (Get-Item "C:\foo.tmp").LastWriteTime

다른 것과 비교하기

$dateA= $lastModifiedDate 
$dateB= (Get-Item "C:\other.tmp").LastWriteTime

if ($dateA -ge $dateB) {
  Write-Host("C:\foo.tmp was modified at the same time or after C:\other.tmp")
} else {
  Write-Host("C:\foo.tmp was modified before C:\other.tmp")
}

제가 성공한 것은 다음과 같습니다.

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}  
#Im using the -gt switch instead of -ge
{}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}


$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)))}
{}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}

dirTimesJS.batfileTimesJS.bat을 사용할 수 있습니다.

예:

C:\>dirTimesJS.bat %windir%

directory timestamps for C:\Windows :

Modified : 2020-11-22 22:12:55
Modified - milliseconds passed : 1604607175000
Modified day of the week : 4

Created : 2019-12-11 11:03:44
Created - milliseconds passed : 1575709424000
Created day of the week : 6

Accessed : 2020-11-16 16:39:22
Accessed - milliseconds passed : 1605019162000
Accessed day of the week : 2

C:\>fileTimesJS.bat %windir%\notepad.exe

file timestamps for C:\Windows\notepad.exe :

Modified : 2020-09-08 08:33:31
Modified - milliseconds passed : 1599629611000
Modified day of the week : 3

Created : 2020-09-08 08:33:31
Created - milliseconds passed : 1599629611000
Created day of the week : 3

Accessed : 2020-11-23 23:59:22
Accessed - milliseconds passed : 1604613562000
Accessed day of the week : 4

지난 2일 동안 수정된 모든 문서 라이브러리 파일을 찾기 위한 PowerShell 코드입니다.

$web = Get-SPWeb -Identity http://siteName:9090/ 
        $list = $web.GetList("http://siteName:9090/Style Library/")
        $folderquery =  New-Object Microsoft.SharePoint.SPQuery  
        $foldercamlQuery =  
        '<Where>   <Eq> 
                <FieldRef Name="ContentType" />  <Value Type="text">Folder</Value> 
            </Eq> </Where>' 
        $folderquery.Query = $foldercamlQuery 
        $folders = $list.GetItems($folderquery) 
        foreach($folderItem in $folders) 
        { 
            $folder = $folderItem.Folder
            if($folder.ItemCount -gt 0){ 
            Write-Host " find Item count " $folder.ItemCount
                $oldest = $null
                $files = $folder.Files

                $date = (Get-Date).AddDays(-2).ToString(“MM/dd/yyyy”)
                foreach ($file in $files){ 
                    if($file.Item["Modified"]-Ge $date)
                    {
                        Write-Host "Last 2 days modified folder name:"   $folder   " File Name: "  $file.Item["Name"]   " Date of midified: "  $file.Item["Modified"] 
                    } 
                } 
            } 
            else
             { 
                Write-Warning "$folder['Name'] is empty" 
            } 
        }

언급URL : https://stackoverflow.com/questions/19774097/finding-modified-date-of-a-file-folder

반응형