Jawaban:
Jika aplikasi Java tidak berhenti (mis. Anda menggunakan file batch untuk meluncurkan aplikasi Java), maka gunakan start
perintah untuk meluncurkannya: -
start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
Ini akan meluncurkan aplikasi java dan melanjutkan mengeksekusi file batch tanpa menunggu aplikasi java selesai.
Penjelasan:
Inilah cara kerjanya; file batch diproses satu baris setiap kali. Setiap perintah dieksekusi secara bergantian dan prosesor batch menunggu satu perintah selesai sebelum memulai yang berikutnya. Masalah yang Anda alami adalah karena aplikasi Java yang Anda luncurkan (Jilko.jar) adalah program berjendela yang terus berjalan bahkan setelah baris yang meluncurkannya. Jika itu adalah alat yang melakukan beberapa tindakan dan kemudian berakhir, file batch akan melanjutkan ke perintah berikutnya (atau keluar jika tidak ada lagi). Karena program masih berjalan, prosesor batch menunggu hingga jendela ditutup sebelum melanjutkan. Anda dapat melihat ini dalam tindakan dengan keluar dari program Java: jendela konsol dengan file batch kemudian ditutup.
Larutan:
Apa yang perlu Anda lakukan untuk memperbaikinya, adalah menginstruksikan batch processor untuk meluncurkan program dan melanjutkan tanpa menunggu seperti itu:
start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
Sebagai Terrance disebutkan , itu ""
adalah judul yang digunakan untuk jendela konsol. Namun itu hanya opsional jika perintah tidak ada dalam tanda kutip; jika tidak wajib . Anda dapat meletakkan sesuatu di sana jika Anda suka atau membiarkannya kosong, tetapi jika perintah dalam tanda kutip, itu harus ada, jika tidak, penerjemah perintah akan memperlakukan perintah yang dikutip sebagai judul dan membuka konsol yang hanya duduk di sana menunggu sesuatu untuk dilakukan.
Anda dapat menggunakan sesuatu dengan perintah berikut sebagai gantinya, tetapi tanda kutip hanya lebih mudah dan aman karena nama pendek tidak dijamin sama pada setiap sistem.
start C:\Progra~2\Java\jre6\bin\javaw.exe -Xmx1024M -Xms1024M -jar Jilko.jar
Itu start
perintah adalah perintah bawaan yang memunculkan proses (pada dasarnya seperti menjalankan program dari menu Mulai). Jadi apa yang terjadi dalam konteks ini adalah bahwa prosesor batch menjalankan start
perintah yang pada gilirannya menjalankan program yang ditentukan dan berakhir (itu sendiri, bukan program yang muncul). Dengan demikian, prosesor batch terus berjalan seperti yang diharapkan. Ini juga memiliki beberapa opsi yang dapat bermanfaat seperti menjalankan program diminimalkan ( /min
) atau dimaksimalkan ( /max
), menjalankannya dalam prioritas rendah ( /low
) dan seterusnya. Lihat start /?
untuk detail.
Saya telah menemukan bahwa beberapa program yang saya luncurkan proses cuti berjalan, dan jendela konsol tidak akan menutup sampai mereka berhenti jika saya hanya menjalankannya dengan meluncurkan yang dapat dieksekusi.
Program START memperbaikinya, tetapi masalah lama dengan START masih ada. Anda tidak bisa hanya menggunakan:
START "c:\my dir\myfile.exe"
Parameter pertama MULAI masih nama jendela. Jika Anda menghilangkannya, Anda cukup membuka kotak konsol CMD dengan jendela bernama apa pun yang Anda coba luncurkan. Dalam contoh di atas, sekarang saya memiliki jendela konsol dengan judul jendela " c: \ my dir \ myfile.exe ". Bukan yang saya inginkan!
Untuk menghilangkan nama jendela, cukup gunakan sepasang tanda kutip ganda untuk mendefinisikan string kosong, seperti:
START "" "c:\my dir\myfile.exe"
Akhirnya, akhiri file batch Anda dengan perintah EXIT untuk memastikannya ditutup.
Metode ini tampaknya bekerja secara konsisten di Windows 7 dan 8.
Untuk pemecahan masalah, saya menemukan bahwa menambahkan ECHO tentang apa yang akan saya lakukan, kemudian TIMEOUT dari apa yang baru saja saya lakukan, sangat membantu. Sebagai contoh:
ECHO I'm about to launch the program...
START "" "c:\my dir\myfile.exe"
TIMEOUT 5
Karena Timeout memberi Anda hitungan mundur, Anda tidak perlu ECHO yang akan Anda tunda.
Juga - gunakan EXIT selalu, di bawah Windows 7, karena hanya sampai ke akhir file batch tidak harus menghentikannya - seperti pada versi Windows sebelumnya. Windows 7 mungkin lebih sensitif terhadap ini daripada versi NT sebelumnya (mis. Windows 2000 Professional). Ini disebutkan dalam beberapa, tapi tidak semua dari jawaban sebelumnya.
Rincian pengalaman pribadi untuk mendukung jawaban:
Setelah mentransfer instalasi StarOffice5.2 dari Windows 2000 ke Windows 7, saya mendapatkan kesalahan ruang memori setelah mengakhiri suite. Ini tidak terlihat di Windows 2000.
Bertahun-tahun yang lalu, saya telah menulis file batch untuk secara otomatis membuat cadangan dan mengembalikan soffice.ini, untuk mengizinkan perbaikan ketika menjadi rusak (seringkali cukup menjadi masalah - suite gagal memuat). Cadangan otomatis (dipicu oleh tautan ke file batch, ditempatkan di Office52 \ user \ config \ startup) hanya terjadi setelah penundaan 5 detik. Saya perhatikan setiap kali saya keluar dari suite tepat sebelum file batch berjalan, penghentian suite tersebut terjadi tanpa kesalahan. Ini menunjuk saya ke masalah dalam file batch.
Setelah perintah 'EXIT' ditempatkan sebagai baris terakhir pada file batch, office suite mulai berakhir tanpa pesan kesalahan ruang memori, setiap saat, apakah File Batch telah berjalan atau tidak.
Saya hanya berurusan dengan masalah yang sama, dan akhirnya diselesaikan dengan sendirinya setelah membuat perubahan acak ke batchfile- Saya tidak mengerti mengapa tetapi saya akan mempostingnya di sini jika itu membantu orang lain nanti.
Saya menggunakan SysInternals Pskill utilitas dan tidur utilitas karena XP Home tidak termasuk banyak dalam hal fungsi commandline.
Ini adalah file batch yang benar-benar ditutup setelah selesai:
@echo off
start /min C:\Progra~1\PsTools\pskill.exe explorer.exe
start /min C:\Progra~1\PsTools\pskill.exe Powermenu.exe
start /min C:\Progra~1\PsTools\pskill.exe PWGen.exe
start /min C:\Progra~1\PsTools\pskill.exe redshiftgui.exe
start /min C:\Progra~1\PsTools\pskill.exe clipx.exe
sleep 2
start explorer.exe
sleep 3
start C:\Progra~1\ClipX\clipx.exe
sleep 1
start C:\Progra~1\Powermenu\PowerMenu.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
start C:\Progra~1\RedshiftGUI\redshiftgui.exe && exit
Jika saya mengubah beberapa baris terakhir seperti ini, jendela cmd akan tetap terbuka sampai saya mengklik 'X' di sudut:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe && exit
Bahkan ketika saya mencoba memanggil pskill untuk bunuh diri, proses cmd.exe akan hilang dari Task Manager, dan pskill akan melaporkan dari dalam itu cmd.exe bahwa proses cmd.exe telah terbunuh, namun cmd.exe
jendela akan tetap terjaga sampai saya mengklik 'X' di sudut:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
C:\Progra~1\PsTools\pskill.exe cmd.exe
Setelah saya tambahkan && exit
untuk setiap baris, saya perhatikan beberapa dari mereka menanggapinya dan akan mengganggu pemrosesan batch - sementara yang lain tidak.
Jadi saya hanya menempatkan salah satu yang responsif di akhir daripada bagaimana saya memilikinya pada awalnya.
Seperti yang saya katakan, saya tidak tahu mengapa, tapi senang ini sudah selesai.
mencoba:
cmd /c "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
Windows 2003 tidak memiliki "Akun Pengguna" di Panel Kontrol secara default. Saya menulis kumpulan singkat untuk membuka Akun Pengguna:
@echo off
rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll
exit
Ini berfungsi ON, Akun Pengguna dibuka, tetapi jendela CMD tetap terbuka juga. Setelah beberapa penelitian di sini, saya menambahkan: MULAI "" ke awal baris 2 seperti:
@echo off
Start "" rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll o
exit
Sekarang jendela Akun Pengguna terbuka, tetap terbuka dan jendela CMD ditutup. Peasy mudah.
Saya membuat file batch menggunakan net pada mesin Windows 7 32-bit dan cmd file batch tidak akan keluar setelah eksekusi. Saya menjalankan file batch yang sama pada mesin Windows 7 64-bit lain dan cmd dari file batch keluar secara normal.
Saya mencoba Saran Bryan dan tidak berfungsi pada mesin Windows 7 32-bit itu karena tidak ada proses conhost.exe jadi saya memodifikasinya sebagai berikut:
Taskkill /IM cmd.exe /F
File batch penggunaan bersih tidak selalu keluar secara normal dan itu menunjukkan konfirmasi "Hentikan pekerjaan batch (Y / T)" secara acak .
Menurut Ini benang Saya memodifikasi file batch sebagai berikut:
@echo off
if "%~1"=="-FIXED_CTRL_C" (
REM Remove the -FIXED_CTRL_C parameter
SHIFT
) ELSE (
REM Run the batch with <NUL and -FIXED_CTRL_C
CALL <NUL %0 -FIXED_CTRL_C %*
GOTO :EOF
)
net use \\Server\folder
Taskkill /IM cmd.exe /F
Net menggunakan file batch akhirnya keluar secara normal.
nohup
en.wikipedia.org/wiki/Nohup