단순 PowerShell 마지막 쓰기 시간 비교
파일 속성에 액세스하여 LastWriteTime 속성을 검색하여 현재 날짜와 비교하고 날짜 차이를 반환할 수 있는 PowerShell 스크립트가 필요합니다.
이런 게 있어요
$writedate = Get-ItemProperty -Path $source -Name LastWriteTime
...그러나 마지막 쓰기 시간을 "날짜 시간" 데이터 유형에 캐스트할 수 없습니다."@{LastWriteTime=...date를 변환할 수 없습니다..."시스템"으로.날짜 시간".
다음을 시도해 보십시오.
$d = [datetime](Get-ItemProperty -Path $source -Name LastWriteTime).lastwritetime
이것은 항목 속성 이상성의 일부입니다.Get-ItemProperty를 실행하면 값이 반환되지 않고 속성이 반환됩니다.값에 도달하려면 간접적인 수준을 하나 더 사용해야 합니다.
(ls $source).LastWriteTime
("ls", "dir" 또는 "gci"는 Get-ChildItem의 기본 별칭입니다.)
제가 공유하고 싶은 예가 있습니다.
$File = "C:\Foo.txt"
#retrieves the Systems current Date and Time in a DateTime Format
$today = Get-Date
#subtracts 12 hours from the date to ensure the file has been written to recently
$today = $today.AddHours(-12)
#gets the last time the $file was written in a DateTime Format
$lastWriteTime = (Get-Item $File).LastWriteTime
#If $File doesn't exist we will loop indefinetely until it does exist.
# also loops until the $File that exists was written to in the last twelve hours
while((!(Test-Path $File)) -or ($lastWriteTime -lt $today))
{
#if a file exists then the write time is wrong so update it
if (Test-Path $File)
{
$lastWriteTime = (Get-Item $File).LastWriteTime
}
#Sleep for 5 minutes
$time = Get-Date
Write-Host "Sleep" $time
Start-Sleep -s 300;
}
(Get-Item $source).LastWriteTime
제가 선호하는 방법입니다.
OP가 그 중 하나를 그들의 문제를 해결하는 것으로 받아들였기 때문에 저는 여기서 어떤 답변도 비난할 수 없습니다.하지만, 저는 그것들이 한 가지 측면에서 결함이 있다는 것을 발견했습니다.할당 결과를 변수에 출력하면 원하는 답뿐만 아니라 여러 개의 빈 줄이 포함됩니다.예:
PS C:\brh> [datetime](Get-ItemProperty -Path .\deploy.ps1 -Name LastWriteTime).LastWriteTime
Friday, December 12, 2014 2:33:09 PM
PS C:\brh>
저는 코드의 간결함과 정확성의 두 가지를 좋아합니다. 브리너리는 로저 립스콤에게 모자의 끝으로 간결함에 대한 권리가 있지만 결과의 추가적인 행으로 인해 둘 다 정확성을 놓칩니다.OP가 제가 결승선을 통과할 수 있었던 이유는 바로 여기에 있다고 생각합니다.
PS C:\brh> (ls .\deploy.ps1).LastWriteTime.DateTime
Friday, December 12, 2014 2:33:09 PM
PS C:\brh>
PowerShell에서 프롬프트를 구분하는 데 사용하는 추가 줄이 부족합니다.이제 비교를 위해 변수에 할당하거나, 제 경우와 마찬가지로 나중에 세션에서 읽고 비교할 수 있도록 파일에 저장할 수 있습니다.
약간 더 쉬움 - 사용new-timespan
cmdlet - 현재 시간에서 시간 간격을 만듭니다.
ls | where-object {(new-timespan $_.LastWriteTime).days -ge 1}
에는 오늘 작성되지 않은 모든 파일이 표시됩니다.
사용하다
ls | % {(날짜 가져오기) - $.마지막 쓰기 시간 }
디프를 검색할 수 있습니다.대체할 수 있습니다.ls
일렬 종대로
언급URL : https://stackoverflow.com/questions/1018934/simple-powershell-lastwritetime-compare
'programing' 카테고리의 다른 글
파워셸에서 N개의 병렬 작업 실행 (0) | 2023.08.19 |
---|---|
Oracle에서 볼 수 있는 문자열의 실제 길이 (0) | 2023.08.14 |
Mac OS X에서 Git 설치 폴더 찾기 (0) | 2023.08.14 |
토쿠드와 프랙탈 나무 지수 (0) | 2023.08.14 |
PowerShell 시작 작업 작업 디렉터리 (0) | 2023.08.14 |