Adakah yang tahu jika ada skrip cmd yang melakukan itu dan / atau alat baris perintah yang siap untuk pekerjaan itu?
Adakah yang tahu jika ada skrip cmd yang melakukan itu dan / atau alat baris perintah yang siap untuk pekerjaan itu?
Jawaban:
Buat tiga file batch di bawah ini. Main.bat meluncurkan 1.bat dan 2.bat
1.bat dan 2.bat menulis file sementara yang diperiksa main.bat. Ketika 1.bat dan 2.bat berfungsi, main.bat melaporkan kembali bahwa pemrosesan masih terjadi. Ketika Anda menekan enter pada jendela terbuka 1.bat atau 2.bat, file sementara dihapus, dan program keluar. Ini mensimulasikan pemrosesan berhenti untuk file .bat itu. Jika Anda melakukan ini untuk 1 dan 2.bat, main.bat melaporkan kepada Anda bahwa pemrosesan telah selesai untuk proses ini. Anda dapat membuat 1.bat dan 2.bat melakukan apa pun yang Anda inginkan, selama Anda menghapus file sementara saat Anda selesai. Pada titik ini main.bat dapat melakukan apapun yang Anda inginkan juga.
1.bat
echo %time% > 1.tmp
pause
del 1.tmp
exit
2.bat
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!
Cukup sederhana, asalkan prosesnya tidak memerlukan input atau output standar. Dari baris perintah, atau dalam file batch:
process1 | process2 | process3 | process4
Ini akan menjalankan keempat proses secara bersamaan, dan tidak akan kembali sampai semuanya keluar. (Kemungkinan pengecualian: jika suatu proses secara eksplisit menutup output standar mungkin diperlakukan seolah-olah telah keluar. Tapi itu tidak biasa, sangat sedikit proses melakukan itu.)
Saya tidak yakin persis berapa banyak proses yang dapat Anda luncurkan secara simultan dengan cara ini. Saya sudah mencoba hingga sepuluh.
Satu-satunya cara untuk melakukan ini adalah memulai file batch yang terpisah (lihat start /?
) yang menjalankan tugas individu dan menulis file teks setelah selesai. Kemudian, Anda secara berkala memeriksa apakah file teks telah dibuat.
Anda mungkin melihat cmdlet Start-Job Powershell. Seharusnya memungkinkan Anda untuk melakukan ini. Lebih lanjut di sini Powershell adalah pilihan Microsoft. Ini jauh lebih kuat daripada skrip cmd dan juga investasi waktu Anda
Atau Anda dapat menggunakan ini: http://www.out-web.net/?p=167
Saya berhasil, berhasil, namun kadang-kadang terjadi bahwa PID dari proses selesai segera digunakan kembali oleh prosesus Windows lain yang baru saja dimulai, dan itu membuat deteksi akhir proses Anda berbahaya / salah.
Saya juga mencari tugas serupa. Tujuannya adalah untuk menjalankan beberapa perintah secara paralel dan mengekstrak output (stdout & error) dari semua proses paralel. Kemudian tunggu semua proses paralel untuk menyelesaikan dan menjalankan perintah lain. Berikut ini adalah contoh kode untuk file BAT, dapat dieksekusi dalam 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
Semua pernyataan di dalam ()
dieksekusi terlebih dahulu, tunggu sampai selesai, lalu dua baris terakhir dieksekusi. Semua perintah yang dimulai start
dijalankan secara bersamaan.
Tautan ini sangat membantu: /programming//a/43762349/9689416 dan https://ss64.com/nt/start.html