Program peluncuran skrip batch Windows dan keluar dari konsol

90

Saya memiliki skrip batch yang saya gunakan untuk meluncurkan program, seperti notepad.exe. Ketika saya mengklik dua kali pada file batch ini, notepad mulai secara normal, tetapi jendela hitam dari cmdsiapa yang meluncurkan notepad.exetetap di latar belakang. Apa yang harus saya lakukan untuk meluncurkan notepad.exedan menghilangkan jendela cmd?

edit : lebih rumit daripada menggunakan \I.

The cmdpanggilan cygwin, dan cygwinmulai notepad. saya menggunakan

start \I \path\cygwin\bin\bash.exe

dan jendela pertama (cmd) menghilang, tetapi jendela kedua (\ cygwin \ bin \ bash.exe) masih di latar belakang. Di script cygwin saya gunakan notepad.exe &dan kemudian keluar.

Possa
sumber

Jawaban:

204
start "" "%SystemRoot%\Notepad.exe"

Pertahankan ""di antara awal dan jalur aplikasi Anda.


Penjelasan tambahan:

Biasanya ketika kami meluncurkan program dari file batch seperti di bawah ini, kami akan memiliki jendela hitam di latar belakang seperti yang dikatakan OP.

%SystemRoot%\Notepad.exe

Ini disebabkan oleh Notepad berjalan di command prompt (proses) yang sama. Prompt perintah akan menutup SETELAH notepad ditutup. Untuk menghindarinya, kita dapat menggunakan startperintah untuk memulai proses terpisah seperti ini.

start %SystemRoot%\Notepad.exe

Perintah ini baik-baik saja selama tidak ada spasi di jalurnya. Untuk menangani spasi di jalur untuk berjaga-jaga, kami menambahkan "tanda kutip seperti ini.

start "%SystemRoot%\Notepad.exe"

Namun menjalankan perintah ini hanya akan memulai command prompt kosong lainnya. Mengapa? Jika Anda mencari ke start /?, startperintah akan mengenali argumen antara "sebagai judul dari prompt perintah baru yang akan diluncurkan. Jadi, untuk mengatasinya, kita punya perintah seperti ini:

start "" "%SystemRoot%\Notepad.exe"

Argumen pertama ""adalah untuk menyetel judul (yang kami tetapkan sebagai kosong), dan argumen kedua "%SystemRoot%\Notepad.exe"adalah perintah target untuk dijalankan (yang mendukung spasi di jalur).

Jika Anda perlu menambahkan parameter ke perintah, tambahkan saja tanda kutip, yaitu:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 
checksum
sumber
12
catatan: ketika Anda ingin memulai file java jar dengan cara ini, pastikan untuk menggunakan javawfile yang dapat dieksekusi (tidak hanya java, karena javaakan memulai jendela batch lain): misalnyastart "" "javaw" -jar C:\JavaProject\myApp.jar
TmTron
@checksum Tolong dapatkah Anda juga memperluas contoh Anda tentang bagaimana mengarahkan kesalahan standar dan keluaran standar dari aplikasi yang dimulai?
Starfish
@Starfish Saya pikir notepad tidak memiliki stdout dan stderr. Tetapi untuk pertanyaan Anda, itu akan menjadi seperti application.exe > stdout.txt 2>stderr.txt. Menambahkan pertanyaan Anda ke jawaban di atas akan menyimpang dari pertanyaan pembuat poster asli. Mungkin Anda bisa memulai pertanyaan baru untuk ditanyakan lebih detail.
checksum
1
Solusi yang sama sekali tidak masuk akal. Windows menang lagi.
Ярослав Рахматуллин
9

Gunakan start notepad.exe.

Info selengkapnya dengan start /?.

Benoit
sumber
1
Dan tepatnya argumen yang mana? /B? Saya membacanya, tetapi jika saya menggunakan start /B notepad.exejendela cmd tidak hilang.
Possa
Oke, lebih rumit daripada menggunakan \I. Panggilan cmd cygwin, dan cygwin start notepad. Saya menggunakan start \I cygwindan jendela pertama menghilang, tetapi jendela kedua masih di latar belakang. Dalam script cygwin saya gunakan notepad.exe &dan kemudianexit
Possa
cygstart memulai notepad, tetapi konsol tetap di latar belakang.
Possa
5

Cara termudah adalah dengan memulainya start

start notepad.exe

Di sini Anda dapat menemukan informasi lebih lanjut tentangstart

saudara 28
sumber
4

%ComSpec% /c %systemroot%\notepad.exe

MrBogus
sumber
ini tidak menutup jendela cmd%ComSpec% /c emacs.exe "-rv" "--no-splash"
jcubic
0

Hmm ... saya melakukannya di salah satu file batch saya seperti ini, tanpa menggunakan PANGGILAN atau MULAI:

%SystemRoot%\notepad.exe ..\%URI%
GOTO ENDF

Saya belum menginstal Cygwin dan saya menggunakan Windows XP.

djangofan.dll
sumber
Mendapat kesalahan "The system cannot find the batch label specified - ENDF"pada Windows 10
jcubic
0
start "" ExeToExecute

metode tidak berfungsi untuk saya dalam kasus Xilinx xsdk, karena seperti yang ditunjukkan oleh @jeb di komentar di bawah ini sebenarnya adalah file bat.

jadi apa yang tidak berhasil secara de-facto adalah

start "" BatToExecute

Saya mencoba membuka xsdk seperti itu dan membuka cmd terpisah yang perlu ditutup dan xsdk dapat berjalan sendiri

Sebelum meluncurkan xsdk saya menjalankan (sumber) Env / Paths (dengan settings64.bat ) sehingga perintah xsdk.bat dikenali (hanya sebagai xsdk, tanpa .bat )

apa yang berhasil dengan .bat

call BatToExecute
Tomasz Janicki
sumber
2
Ini mungkin menjawab pertanyaan, tapi bukan yang ini. Pertanyaannya adalah tentang memulai file .exe ( notepad.exe) dengan memisahkannya dari cmd.exe. Anda menjawab bagaimana memulai file .bat dalam contoh yang sama
jeb
-4

Cobalah untuk memulai path\to\cygwin\bin\bash.exe

yyyx
sumber
1
Ini tidak benar-benar menjawab pertanyaan OP. Dia tidak bertanya bagaimana memulainya cygwin.
Jeremy J Starcher