2014-09-11 2 views
0

우리 회사는 배치 스크립트를 통해 야간에 실행되는 많은 자동화 기능을 갖추고 있습니다. 대부분 여기 저기에 새로운 파일을 복사하는 것뿐입니다. 내가 찾고있는 것은 모든 스크립트가 실행되어 모든 것이 최신 상태인지 확인한 후 파일 생성 날짜/마지막 수정 날짜를 검사하는 방법입니다. 기본적으로 공유 드라이브 또는 UNC 경로의 특정 파일을 찾습니다. 해당 파일이 24 시간 미만이면 아무것도하지 마십시오. 제목 파일이 24 시간보다 오래 되었다면 전자 메일을 트리거하십시오. IF 문 끝 부분에 추가 할 수 있도록 전자 메일을 보낼 VBS가 이미 있습니다. 어떤 도움을 주셔서 감사합니다.파일의 최종 수정 날짜를 모니터링하는 배치 스크립트 찾기

답변

0

당신은 여기

은 라인을 따라 뭔가를 할 것입니다 일상의 ... for %a in (file.txt) do echo %~ta으로 파일 수정 날짜 (배치 파일에서 % 배)

+0

확실히 올바른 길을 가고 있습니다. 그러나 배치 파일에서 명령을 실행하면 결과가 표시되지 않습니다. "% a (C : \ PROJECTS \ results.txt)에서 echo % ~ ta> C : \ PROJECTS \ NAVIS_MONITOR.txt"를 선택하십시오. 문자열을 복사하여 cmd 프롬프트에 붙여 넣으면 완벽하게 작동합니다. 그러면 FC를 수행하고 필요한 것을 얻을 수 있습니다. 그러나 배치 파일에서 해당 줄을 실행하면 아무것도 얻지 못합니다. –

+0

배치 파일에서'%%'는'% '대신 두 번 쓰여 져야합니다. 명령 프롬프트 창에서'help for' 또는'for /? '를 입력하면'for' 명령 출력에 대한 도움말을 참조하십시오. – Mofi

+0

도움을 주셔서 감사합니다. 이 일은 나를 잡았어. –

1

이 가지 방법과 의미를 얻을 수 있습니다 당신 개요 :

@ECHO Off 
SETLOCAL 

:: remove variables starting $ 
FOR /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a=" 
SET "sourcedir=U:\sourcedir" 
SET "runflag=runflag.###" 
SET "foundrun=" 
ATTRIB -h "%sourcedir%\runflag.###" 
FOR /f "tokens=1,2delims=:" %%a IN ('dir /b /od /a-d "%sourcedir%"^|findstr /n /r "^"') DO (
IF %%b==%runflag% SET foundrun=Y 
IF NOT DEFINED foundrun SET "$%%a=%%b" 
) 
(
ECHO(Old file list 
FOR /F "tokens=1,2delims==" %%a In ('set $ 2^>Nul') DO ECHO(%%b 
)>"%sourcedir%\%runflag%" 
ATTRIB +h "%sourcedir%\runflag.###" 
IF DEFINED $1 ECHO(send email 
GOTO :EOF 
당신은 당신의 상황에 맞게 sourcedir의 설정을 변경해야합니다

. runflag은 편리한 파일 이름입니다.

여기의 오브젝트는이 루틴의 이전 실행 이후 갱신되지 않은 파일을 찾는 것입니다. 공휴일, 주말 등의 경우 고정 된 "24 시간"아이디어를 얻습니다.

변경되지 않은 파일의 이름은 runflag.###인데 blat과 같은 메일러에서 사용하는 것이 이상적입니다.

여기에 hidden 플래그로 놀았습니다. "여기 없어야합니다. 이해가 안됩니다. 삭제하겠습니다"라는 파일을 숨기려고합니다. (그 태도를 취하는 사람들은 종종 간단한 + H와 + R로 패배 할 수 있습니다). ATTRIB 명령을 개선하거나 제거하십시오.

0

\\server\share을 변경하고 filename.ext 대신 파일 이름을 사용하십시오. 파일이 1 일 이상 경과하면 email.bat 파일이 시작됩니다.

robocopy "\\server\share" "%temp%" filename.ext /minage:1 /L |find " New File " >nul && call email.bat 
관련 문제