Bagaimana menjalankan proses di latar belakang tanpa membiarkan file batch terbuka?

9

Saya memiliki layanan Windows (server integrasi Bamboo) yang menjalankan file batch sebagai subprocess (pekerjaan build) dari skrip itu. Di dalam file batch itu saya ingin dapat memulai suatu proses (sebut saja itu workerprocess.exe) dan biarkan proses itu berjalan di latar belakang. Ini semua baik, saya telah menggunakan:

start "title" /B workerprocess.exe

Semuanya baik dan bagus. Masalahnya adalah bahwa ini kemudian menahan penyelesaian pekerjaan build. Jadi skrip batch selesai, tetapi karena subproses pekerjaprocess.exe, layanan (Bambu) tidak tahu bahwa ia telah selesai: masih menunggu (dan menampilkan output dari) pekerjaprocess.exe.

Saya telah melihat dokumentasi untuk perintah mulai, dan saya tidak dapat melihat apa pun yang melakukan apa yang saya inginkan. Saya melihat pertanyaan ini tetapi itu tidak benar-benar membantu - layanan masih berakhir menunggu proses untuk menyelesaikan.

Jadi saya kira dalam ringkasan: bagaimana saya bisa menjalankan proses baru dari skrip batch sehingga benar-benar terlepas dan tidak akan menahan apa pun yang terjadi menunggu skrip batch selesai.

Jack Scott
sumber
1
Sudahkah Anda mencobanya tanpa parameter "/ B" sehingga tidak memulai proses dalam jendela perintah yang sama?
Josh
@ JoshR, itu mengubah banyak hal. Layanan tidak lagi menerima output dari proses, tetapi masih diblokir olehnya.
Jack Scott

Jawaban:

2

Sudahkah Anda mencoba Hidden Start (HSTART) ? (Biaya $ 20)

Saya menggunakannya secara pribadi untuk menjalankan pekerjaan batch per jam dengan jendela yang tersembunyi. Mereka juga menyebutkan bahwa Anda dapat menjalankan perintah secara berurutan sebagai parameter (atau secara default, saya asumsikan) berjalan secara tidak sinkron. Saya tidak tahu bagaimana ini akan memengaruhi pertikaian Anda tentang CPU, memori, atau disk ... tetapi perangkat lunak ini juga memberi Anda opsi untuk menunggu beberapa saat sebelum melakukan tindakan.

Matahari
sumber
Ketika saya menulis jawaban saya pada September 2013, produk itu gratis di mana-mana. Sayangnya mereka memungut biaya.
Minggu
3

Semua skrip yang ditautkan dapat diunduh dan disimpan dengan nama apa pun yang Anda rasa nyaman.

1) Solusi IEXPRESS - karena argumen hanya menerima perintah dan argumennya.

Contoh penggunaan:

call hidder.bat myBat.bat  myexe.exe
call myexe.exe

2) SCHTASKS - Sekali lagi hanya menerima dua argumen - perintah dan argumen. Juga memeriksa apakah itu dimulai dengan izin yang ditinggikan dan jika mungkin mendapatkan PID proses dengan perintah WEVTUTIL.

Contoh penggunaan:

call SCHPhidden.bat "cmd /c myBat.bat"  "argument"

3) 'WScript.Shell' - skrip adalah pembungkus penuh 'WScript.Shell' dan setiap opsi yang mungkin dapat diatur melalui opsi baris perintah. Ini adalah jscript / batch hybrid dan dapat disebut sebagai kelelawar.

Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'):

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 

4) 'Win32_ProcessStartup' - lagi pembungkus penuh dan semua opsi dapat diakses melalui argumen baris perintah. Kali ini WSF / batch hybrid dengan beberapa Jscript dan beberapa potongan kode VBScript - tetapi mengembalikan PID dari proses yang dimulai. Jika proses id tidak menyembunyikan beberapa opsi seperti koordinat X / Y dapat digunakan.

Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'). Ini akan memerlukan path lengkap ke skrip executable / jika tidak ada di %path%:

call win32process.bat "notepad" -arguments "/A openFile.txt"  -showWindow 0 -title "notepad"

5). Solusi NET . Sebagian besar opsi opsi ProcessStartInfo digunakan (tetapi pada akhirnya saya terlalu lelah untuk memasukkan semuanya):

Contoh penggunaan (untuk info lebih lanjut cetak bantuan dengan '-h'):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal
npocmaka
sumber
Tautan tidak ditemukan
Rahil Wazir
@rahilwazir - diedit.
npocmaka
1
Saya mencoba ini sedikit - saya pikir detailnya perlu dibersihkan dengan kesepakatan BESAR. Cukup dengan melihat pendekatan pertama: IExpress, tautannya ke hidder.bat contoh di atas menggunakan sesuatu yang lain. Ketika saya menjalankan skrip, gagal meminta saya untuk EXE yang tidak disebutkan di atas. Itu mungkin ok jika ada penurunan harga pada github, tetapi tidak ada. Akhirnya, menjalankannya menghasilkan beberapa file .DDF, tetapi tidak ada yang lain ....
JoeG