2013-11-22 3 views
0

그래서 현재 배치 파일을 만들려고합니다. 프로그램 X의 양이 50 일치하지 않는 경우 - - 프로그램 X가 50 회를 열 곳 경우 다시 한 번 50배치 할 파일을 만듭니다. 예 : 프로그램 X 프로세스 50 개, 프로그램 X 합계가 50 개가 아닌 경우 (예 : 충돌)

될 때까지 예는 등 충돌, 그것은 현재 내가 가지고 다시 것이다

:test 
start /high /WAIT /D c:\test\ c:\test\Server.exe -file "c:\test\config\test.txt" 
echo (%time%) WARNING: x closed or crashed 
echo (%time%) Moving logs 
for /f "tokens=1-5 delims=/ " %%a in ('echo %date%') do set dateX=%%d-%%b-%%c 
for /f "tokens=1-5 delims=:." %%a in ('echo %time%') do set timeX=%%a-%%b-%%c 
mkdir "C:\test2 - test2\%dateX% %timeX%\" 
move "%APPDATA%\test\log.txt" "C:\Users\Administrator\Desktop\test2\test2\%dateX% %timeX%\log.txt" 
echo (%time%) Logs moved. Restarting server... 
ping localhost -n 10 > nul 
goto :test 

기본적으로 충돌 부분을 다시 열면 텍스트 파일을 다시 열 수 있습니다 -하지만 난 열 필요/50 시간 부분을 확인하십시오.

도움이 되겠습니다. -

고마워요!

답변

0

EDITED - 의견에 적응. 시작된 프로그램 인스턴스 간 지연 추가

setlocal enableextensions enabledelayedexpansion 
rem what to open 
set "_process=notepad.exe" 
set "_keep=4" 

rem infinite loop: from 0 to 1 in steps of 0 
for /l %%a in (0 0 1) do (
    rem get count of started processes 
    for /f %%b in ('tasklist ^| find /c /i "%_process%"') do if %%b LSS %_keep% (
     rem start as many processes as needed 
     set /a _started=%%b+1 
     for /l %%c in (!_started! 1 %_keep%) do (
      start "" "%_process%" 
      set /a _wait=(%%c-1)*2 
      timeout /t %_wait% > nul 
     ) 
    ) 
    rem wait 
    timeout /t 3 > nul 
) 
+0

감사합니다! - 다소 완벽합니다. 그러나 각 프로그램 사이에 프로그램을 열 때 지연을 만드는 방법이 있습니다. 예 : 4 개 중 2 개를 열면 3 개를 열어 3 개를 열어 10 초 전에 기다립니다 번호 4 등을 엽니 다. – user3020814

+0

@ user3020814 : 어떻게 할 수 있는지 보여주는 변경된 답변. 단지 예입니다. 필요에 따라 조정하십시오. –

+0

다시 한번 감사드립니다 :) – user3020814

관련 문제