배치 스크립트가 배치 스크립트를 실행하여 종료되지 않은 다음 배치 스크립트를 몇 개 더 실행하여 종료 한 다음 첫 번째 배치 스크립트를 닫고 싶습니다.
문제는 내가 시작한 첫 번째 배치 스크립트가 다른 스크립트를 실행하기 전에 연결을 설정해야하며 완료 시점을 결정하려면 첫 번째 스크립트의 출력을보고 연결이 있음을 나타내는 문자열에 대해 시작해야한다는 것입니다 설립.
의사 코드에서
start first script
wait for first script to output specific string
while the first script remains running:
run several other scripts
close the first script
이 문자열은 몇 개의 이전 줄이 인쇄 된 후에 만 나타납니다. 라인 수와 소요 시간은 모두 다를 수 있습니다. 문자열이 한 번에 모두 출력되지는 않습니다. 이 스크립트를 수정할 수 없습니다.
원하는 결과는 다음과 같습니다.
C:\>first_batch_script.bat
Some line
Doing a thing
Winning the points
The Sims did this joke better
Connection established
certain string
C:\>other_batch_script.bat
other_batch_script is done!
C:\>another_batch_script.bat
another_batch_script is done!
C:\>REM kill first_batch_script.bat
이것은 내가 시도하는 코드입니다.
FOR /f "tokens=* delims=" %%L IN ('first_batch_script.bat ^| find "certain string"') DO echo %%L
call other_batch_script.bat
call another_base_script.bat
REM kill first_batch_script.bat
사용하는 FOR /f
것이 유망한 것처럼 보이지만이 스크립트를 실행하면 배치 스크립트가 상당히 느리게 실행 된 다음 정지하는 것처럼 보입니다. 어쨌든, 통과하더라도 루프를 벗어나 코드를 계속 실행하는 좋은 방법을 찾지 못했습니다.
START /WAIT
내가 시작한 첫 번째 스크립트가 종료되지 않아야하므로 사용 하지 않아도됩니다. 모든 종류의 타이밍 방법을 사용하면 연결이 설정되는 데 상당히 다른 시간이 걸릴 수 있으므로 작동하지 않습니다.
그래서 길고 짧습니다.