간단할까요? 공상적인 MD5가 없으며 dir
명령의 출력 만! dir 명령 출력은 검사 할 디렉토리에서 아무 것도 변경되지 않은 경우 실행될 때마다 동일하게 출력되기 때문에 이것은 작동합니다. 도움말에 대한
과 더 많은 옵션을 참조하십시오 :
dir /?
fc /?
예 :
@echo off
if not exist old_fingerprint.txt echo. > old_fingerprint.txt
:: List the directory information, recursive, last write timestamps, 4 digit date
dir /n /s /t:w /4 > new_fingerprint.txt
:: Check out fc /? for all of the comparison options.
fc new_fingerprint.txt old_fingerprint.txt
:: fc sets errorlevel to 0 when the files match and not 0 when the files do not match.
if %ErrorLevel% NEQ 0 echo.No results found in 24 hours>> log.txt
당신이 배치 스크립트의 모든 출력은 바로 fc
라인 뒤에 > nul
던져 숨기려면
.
업데이트 : 제공된 새 정보와 관련하여.
따라서 Results.txt 파일의 마지막 쓰기 타임 스탬프 만 확인하면됩니다. 변경 사항이 없을 때 파일에 쓰지 않고 타임 스탬프를 업데이트하는 한.
더 좋은 점은, 폴더가 그 안의 어떤 활동을했는지 여부 만 신경 쓰면 그 폴더의 '마지막 쓰기'타임 스탬프를 확인하십시오. 시간 소인이 24 시간보다 오래되면 24 시간 내에 결과를 찾을 수 없습니다.
/t:w
옵션을 dir
명령과 함께 사용하면 필요한 시간 스탬프를 구문 분석 할 수 있습니다.
TLDR : KISS
업데이트 2 : 여기
디렉토리 정보의 순수한 고장을 얻는 방법을 보여주는 예제 스크립트입니다.
@echo off
setlocal
for /f "usebackq tokens=1,2,3,4,*" %%A in (`dir /a:d /l /n /t:w /4`) do (
echo.
echo.Date = %%A
for /f "usebackq tokens=1,2,3 delims=/" %%X in ('%%A') do (
echo.Month = %%X
echo.Day = %%Y
echo.Year = %%Z
)
echo.Time = %%B
for /f "usebackq tokens=1,2 delims=:" %%X in ('%%B') do (
echo.Hour = %%X
echo.Minute = %%Y
)
echo.Meridiem = %%C
echo.Type Raw = %%D
for /f "usebackq tokens=1 delims=<>" %%X in ('%%D') do (
echo.Type = %%X
)
echo.Name = %%E
echo.
)
endlocal
답변 : 여기 얻을 타임 스탬프를 비교하는 쉬운 방법을 설명하는 스크립트입니다. 이 스크립트를 24 시간마다 실행하도록 예약 된 작업을 설정하고 마지막 실행 후 시간 스탬프가 변경되지 않은 경우 로그 파일에 메시지를 인쇄합니다.
setlocal enabledelayedexpansion
for /f "usebackq tokens=1,2,3,4,*" %%A in (`dir /a:d /l /n /t:w /4`) do (
if /i "%%~E"=="Folder" (
if exist "LastTimeStamp.txt" find /c /i "%%A %%B %%C %%E" LastTimeStamp.txt > nul
if !ErrorLevel! EQU 0 echo.The folder time stamp has not changed since last checked. >> log.txt
echo.%%A %%B %%C %%E > LastTimeStamp.txt
)
)
endlocal
내가 원하는 것이 맞는지 확실하지 않습니다. 결과 파일이 디렉터리가 아닌 24 시간 내에 변경되었는지 확인하려면 파일 Results.txt를 확인해야합니다. –
파일을 지속적으로 추가하고 폴더에서 제거 할 수 있기 때문입니다. 스크립트가 하루가 시작될 때 파일이없고 하루 종일 파일이 추가 및 제거되었지만 폴더가 다음 날까지 비어 있으면 24 시간 후에 아무 것도 변경되지 않았 음을 보여줍니다. 이것이 내가 5 분마다 (dir을 사용하는) 체크하는 스크립트를 가지고 있고, 변경된 시간과 날짜를 기록하고이 파일이 24 시간 후에 바뀌 었는지 확인하는 또 다른 스크립트가 필요합니다. –
@AlexPowell 업데이트 된 답변보기 . –