그 작업을 수행하는 cmd 스크립트 및 / 또는 명령 줄 도구가 있는지 알고 있습니까?
그 작업을 수행하는 cmd 스크립트 및 / 또는 명령 줄 도구가 있는지 알고 있습니까?
답변:
아래에 세 개의 배치 파일을 작성하십시오. Main.bat는 1.bat 및 2.bat를 시작합니다.
1.bat 및 2.bat는 main.bat가 확인하는 임시 파일을 작성합니다. 1.bat 및 2.bat가 작동하는 동안 main.bat는 처리가 여전히 진행 중임을보고합니다. 1.bat 또는 2.bat의 열린 창에서 Enter 키를 누르면 임시 파일이 삭제되고 프로그램이 종료됩니다. 해당 .bat 파일에 대한 처리 중지를 시뮬레이션합니다. 1과 2.bat 모두에 대해이 작업을 수행하면 main.bat가 이러한 프로세스에 대한 처리가 완료되었음을보고합니다. 완료되면 임시 파일을 지우는 한 1.bat 및 2.bat를 원하는대로 수행 할 수 있습니다. 이 시점에서 main.bat는 원하는 모든 작업을 수행 할 수 있습니다.
1. 박쥐
echo %time% > 1.tmp
pause
del 1.tmp
exit
2. 박쥐
echo %time% > 2.tmp
pause
del 2.tmp
exit
main.bat
@echo off
start "1" 1.bat
start "2" 2.bat
@ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
@ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!
프로세스에 표준 입력 또는 출력이 필요하지 않으면 간단합니다. 명령 행 또는 배치 파일에서 :
process1 | process2 | process3 | process4
이렇게하면 4 개의 프로세스가 모두 동시에 실행되며 모두 종료 될 때까지 반환되지 않습니다. (가능한 예외 : 프로세스가 표준 출력을 명시 적으로 닫으면 마치 마치 마치 마치 마치 출력 된 것으로 간주 될 수 있습니다. 그러나 비정상적인 프로세스는 거의 없습니다.)
이 방법으로 동시에 얼마나 많은 프로세스를 시작할 수 있는지 잘 모르겠습니다. 나는 10까지 시도했다.
Powershell Start-Job cmdlet을 볼 수 있습니다. 그렇게 할 수 있어야합니다. 더 여기 PowerShell은 선택의 마이크로 소프트의 껍질이다. 그것은 cmd 스크립트보다 훨씬 강력하며 시간을 투자 할 가치가 있습니다.
또는 이것을 사용할 수 있습니다 : http://www.out-web.net/?p=167
내가 해냈지만 작동하지만 때로는 완료 된 프로세스의 PID가 방금 시작한 다른 Windows 프로세스에서 즉시 재사용되어 프로세스 끝의 위험을 감지하는 경우가 있습니다.
나는 비슷한 일을 찾고 있었다. 목표는 여러 명령을 병렬로 실행하고 모든 병렬 프로세스의 출력 (stdout & error)을 추출하는 것이 었습니다. 그런 다음 모든 병렬 프로세스가 완료 될 때까지 기다렸다가 다른 명령을 실행하십시오. 다음은 BAT 파일의 샘플 코드이며 CMD에서 실행할 수 있습니다.
(
start "" /B cmd /c ping localhost -n 6 ^>nul
timeout /t 5 /nobreak
start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1
start "" /B cmd /c ping localhost -n 11 ^>nul
timeout /t 10 /nobreak
) | pause
Echo waited
timeout /t 12 /nobreak
내부의 모든 명령문 ()
이 먼저 실행되고 완료 될 때까지 기다린 다음 마지막 두 줄이 실행됩니다. 로 시작하는 모든 명령 start
이 동시에 실행됩니다.
이 링크는 도움이됩니다 : /programming//a/43762349/9689416 및 https://ss64.com/nt/start.html