2014-07-22 2 views
0

업데이트 된 파일을 복사하고 2 분마다 확인하고 싶습니다.일괄 처리 - 폴더에 파일이 업데이트되었는지 확인하십시오.

"updated": 마지막 편집 날짜 또는 파일 크기를 확인한 것과 비슷한 결과가 발생했습니다.

내가 구글에서 검색하고 이걸 발견

for %%X in ("file name") do set size=%%~zX&set filetime=%%~tX

그러나 예, 다음 걸릴 실례 경우 내가 코드 줄이있는 폴더에 확인할 수없는 경우 나도 몰라 귀하의 시간 ...

의견이 명확하지 않으면, 다시 작성하겠습니다.

첫 번째 방법은 파일 크기가 마지막으로 확인 다른 경우 2 분마다 확인 timeout 명령을 사용한다 :

-Briant

답변

0

글쎄, 나는이 두 가지 방법을 생각했다. 두 번째 방법은 2 분마다 실행하고 이전에 저장 한 레지스트리 키를 확인하기 위해 배치 스크립트를 예약하는 것입니다. 스크립트는 모든 시간을 실행하고있을 것을 걱정하지 않는 경우

첫 번째 방법은 그래서 여기에 우리가 간다, 최고 ​​:

@echo off 
setlocal enabledelayedexpansion 
:start 
call:check 
if "%currentFileSize%" NEQ "" (
if !currentFileSize! NEQ !lastFileSize! (
    echo/Here you can do whatever you want 
    pause 
) else (
    echo/Size not changed 
) 
) 
set lastFileSize=%currentFileSize% 
timeout 120 
goto start 
:check 
for /f %%a in ("File.txt") do (set CurrentFileSize=%%~za) 
+0

작동하지만 모든 파일을 폴더로, 심지어 모든 하위 폴더로 타겟팅 할 수 있습니까? – Briant

0
@ECHO OFF 
SETLOCAL 
SET "targetdir=U:\destdir" 
SET "flagfilename=%temp%\changedfiles.flag" 
PUSHD %targetdir% 
(
FOR /f "tokens=1*delims=" %%a IN (
    'dir /b /a-d /o:n "*" 2^>nul' 
) DO (ECHO(%%~za-%%~ta*%%~fa) 
)>"%flagfilename%" 
:loop 
timeout /t 10 >nul 
IF NOT EXIST "%flagfilename%" popd&GOTO :EOF 
(
FOR /f "tokens=1*delims=" %%a IN (
    'dir /b /a-d /o:n "*" 2^>nul' 
) DO (ECHO(%%~za-%%~ta*%%~fa) 
)>"%flagfilename%.2" 

FOR /f "tokens=1,2delims=*" %%a IN ('type "%flagfilename%.2" ') DO (
FINDSTR /L /c:"*%%b" "%flagfilename%" > nul 
IF ERRORLEVEL 1 (ECHO new file:%%~nxb) ELSE (
    FINDSTR /x /L /c:"%%a*%%b" "%flagfilename%" > nul 
    IF ERRORLEVEL 1 (ECHO chg file:%%~nxb) 
) 
) 
FOR /f "tokens=1,2delims=*" %%a IN ('type "%flagfilename%" ') DO (
FINDSTR /L /c:"*%%b" "%flagfilename%.2" > nul 
IF ERRORLEVEL 1 (ECHO del file:%%~nxb) 
) 
MOVE /y "%flagfilename%.2" "%flagfilename%" >NUL 2>NUL 
GOTO loop 


GOTO :EOF 

당신이 관심있는 디렉토리에 targetdir를 설정해야합니다; 선택한 플래그 파일 이름을 설정하십시오.

플래그 파일에 파일 목록을 작성한 다음 컴패니언 목록을 작성하고 비교합니다. 차이점을 분석하고보고합니다.

플래그 파일을 삭제하여 프로세스를 완전히 닫을 수 있습니다.

테스트를 위해 타임 아웃을 10 초로 설정했습니다. 말할 필요도없이 2 분의 사이클 시간 동안 120으로 시간 제한을 변경해야합니다.

+0

좋아요,하지만 폴더의 모든 파일을 타겟팅 할 수 있습니까? – Briant

+0

이 루틴은 * 모든 파일을 대상으로합니다. – Magoo

+0

고마워! 많이 ! – Briant

0

당신이 (당신이 XP를 사용하고 마이크로 소프트에서 무료로 다운로드 할 수있는 2003 리소스 키트 도구를 사용할 수있는 경우 나), ROBOCOPY은 더 나은 옵션을

robocopy c:\source\folder c:\target\folder /e /mot:2 

이 뜻 비스타 이상 OS를 사용하는 경우 재귀 적으로 모든 파일과 폴더를 소스에서 타겟으로 복사하고, 2 분마다 변경 사항이 있으면 대상에 반영됩니다.

관련 문제