2013-05-06 2 views
0

일괄 스크립팅이 처음입니다. 디렉토리를 폴링하여 파일 이름이 LEND로 시작하는 파일을 검사하는 스크립트를 작성하려고 시도하고 파일이 17:30까지 수신되지 않으면 로그 파일에 로그 메시지를 작성하십시오. 아래 배치 스크립트를 작성 했으므로 디렉토리에 파일이없는 한 스크립트는 제대로 실행됩니다. 파일을 저장하자 마자 실행이 멈 춥니 다. 그리고 해당 디렉토리에서 파일을 삭제하면 다시 시작됩니다. 내가 어디로 잘못 가고 있는지 조언 해 주시겠습니까? 감사특정 시간까지 파일 존재 여부를 확인하는 일괄 파일

@echo off 

set I=0 
set log=C:\logs\alerting.log 

:recurse 
for /f %%P in ('dir /b "C:\incoming\LEND*"') do (call :countfiles) 
set Time=%time:~0,5% 
echo Filecount: %I% at Time: %Time% >> %log% 
if %Time%==17:30 goto OUT 
pause 60 
goto :recurse 

:countfiles 
set /a I+=1 

:OUT 
if %I%==0 echo LEND Files not received >> %log% 
EXIT 

답변

0

코드는 종료 countfiles에서 이동합니다. 이 시도 :

:countfiles 
set /a I+=1 
goto:eof 
0

실제로 몇 가지 결점이 있었다 - 시간 변수를 재사용, 지연로 사용되는 일시 정지를 예상하고, 시간 프레임 테스트에서 놓친 및 기타 더 사소한 일 수 있었다. 많은 글꼴 i와 1을

는 지금까지 파일 계수가 간다 테스트하지만 17시 반 지점

나는 몇 가지 명령과 변수 이름 (너무 많이 리터 같다의 스타일을 변경되지 및)

@echo off 

set log=C:\logs\alerting.log 

:loop 
for /f %%P in ('dir /b "C:\incoming\LEND*" 2^>nul ^| find /c /v "" ') do set c=%%P 
set now=%time:~0,5% 
echo Filecount: %c% at Time: %now% 
echo Filecount: %c% at Time: %now% >> %log% 
if %now:~0,2%%now:~3,2% GTR 1730 goto :OUT 
ping -n 60 localhost >nul 
goto :loop 

:OUT 
if %c% EQU 0 echo LEND Files not received >> %log% 
EXIT 
+0

감사합니다. foxidrive. 코드를 사용했는데 전혀 실행되지 않습니다. 나는 내 코드에 약간의 변화를 주었고, 그것은 지금까지 마술을 작동시킨 것처럼 보였다 :/f %% P in ('dir/b "C : \ incoming \ LEND *"')에 대해 for do (set/a I + = 1) 그리고 ": countfiles"가 제거되었습니다. – Rage

+0

코드에 오타가있었습니다. 지금 시도해보십시오. 테스트를 거쳤으며 파일 계산을 위해 여기에서 작업하고 있습니다. 17:30에 지점을 테스트해야합니다. – foxidrive

관련 문제