Bagaimana cara membuat file Batch Windows yang tidak menampilkan Command Prompt saat dijalankan? [duplikat]

58

Pertanyaan ini sudah ada jawabannya di sini:

Saya telah menginstal permata ruby ​​yang disebut Redcar, yang diluncurkan dari baris perintah. Saat dijalankan, ia mencuri shell hingga berakhir, jadi saya harus membuat jendela shell baru untuk terus melakukan pekerjaan baris perintah. Shell yang saya gunakan adalah shell GITBash dari MySysGit.

Saya menemukan file Redcar.bat yang dimaksudkan untuk meluncurkan Redcar sebagai jalan pintas, saya kira, tapi saya tidak ingin jendela command prompt tambahan terbuka setiap kali saya meluncurkan file BAT.

Bagaimana saya menjalankan BAT tanpa melihat prompt?

Jake
sumber
1
Seandainya saya tahu jawaban +1 ini untuk pertanyaan yang bagus.
Supercereal
@Kyle pertanyaan serupa telah diajukan sebelum superuser.com/questions/191149/how-to-execute-cmd-excently menyebutkan HSTART dan secara singkat menyebutkan bahwa file VBS juga dapat diluncurkan
barlop
Bisakah Anda memperbarui jawaban yang Anda pilih? Apakah mungkin dan sangat sederhana ketika Anda tahu caranya .. file batch: baris 1: set var1=hello.txtbaris 2:start "test" notepad.exe "%~dp0%var1%"
Kody Brown
Cukup gunakan ::atau @REM. Sumber: superuser.com/a/843754/101936
PHPst

Jawaban:

38

Anda tidak bisa - menjalankan file batch dengan Command Prompt bawaan akan membuat jendela terbuka sampai file batch keluar.

Yang dapat Anda lakukan adalah mengambil langkah-langkah untuk memastikan bahwa file batch keluar secepat mungkin. Jika memungkinkan, modifikasi file batch untuk menjalankan program apa pun dengan startperintah. Secara default, startsegera kembali tanpa menunggu program untuk keluar, sehingga file batch akan terus berjalan dan, mungkin, segera keluar. Pasangan itu dengan memodifikasi pintasan Anda untuk menjalankan file batch diminimalkan, dan Anda hanya akan melihat taskbar flash tanpa melihat jendela layar.

Satu peringatan untuk ini adalah bahwa jika Anda menjalankan program mode-konsol, yang banyak penerjemah skrip, file batch akan menunggu program untuk keluar, dan menggunakan startakan memunculkan jendela konsol baru. Apa yang perlu Anda lakukan dalam hal ini adalah menjalankan versi interpreter berbasis Windows alih-alih yang berbasis konsol - tidak startperlu. Untuk Perl, Anda akan menjalankan wperl.exebukannya perl.exe. Untuk Python, ini pythonw.exebukan python.exe. Distribusi win32 Ruby lama yang telah saya unduh memiliki rubyw.exe, yang seharusnya melakukan hal yang sama.

Kemungkinan terakhir adalah menggunakan alat pihak ke-3 untuk menjalankan command prompt dengan jendela tersembunyi. Saya pernah mendengar hal-hal seperti itu tetapi tidak pernah menggunakannya, jadi saya tidak tahu apa-apa yang bisa Anda tunjukkan.

afrazier
sumber
Terima kasih itu menjawab pertanyaan saya. Apa yang benar-benar menjengkelkan bukanlah bahwa jendela prompt muncul tetapi harus tetap terbuka selama program berjalan. Sekarang flash benar-benar tertahankan, dan tidak terlalu mengganggu. Akan memeriksa apakah saya dapat memodifikasi skrip untuk menjalankan rubyw, bukan ruby.
Jake
1
Terima kasih banyak untuk menjelaskan perbedaan antara "python" apa saja "pythonw" - akhirnya saya menemukan solusi untuk menjalankan alat python window yang kita miliki tanpa command prompt di latar belakang.
FP
´java.exe´ dan ´javaw.exe´ sama.
redbeam_
Anda bisa - tidak hanya dalam kode batch itu sendiri. benar-benar ada sejumlah Qs di sini dengan As tentang cara menyembunyikan command prompt superuser.com/questions/62525/… superuser.com/questions/191149/how-to-execute-cmd-exe-silently
barlop
21

Saya pikir ini adalah solusi termudah dan terpendek untuk menjalankan file batch tanpa membuka jendela DOS, itu bisa sangat mengganggu ketika Anda ingin menjadwalkan satu set perintah untuk berjalan secara berkala, sehingga jendela DOS terus bermunculan, di sini adalah solusi Anda . Gunakan VB Script untuk memanggil file batch ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Salin baris di atas ke editor dan simpan file dengan ekstensi .VBS. Edit nama file .BAT dan jalur yang sesuai. Kemudian jalankan saja file .vbs dan keajaiban terjadi!

indago
sumber
8

Anda dapat menjalankan file batch lain dengan START / MIN CMD.EXE / C mybatchfile.bat dari dalam prompt perintah.

Dari luar itu akan membawa jendela konsol cmd tetapi untuk menghindari itu, Anda dapat membuat file pintas dengan properti yang dimodifikasi untuk mulai diminimalkan .

vhanla
sumber
2
Di Windows 8.1, opsi ini ada di Properties -> tab Shortcut -> Run: -> Minimized (defaultnya adalah "Normal Window")
pix
5

Untuk melakukan ini, gunakan program Bat To Exe Converter untuk mengkonversi file batch Anda menjadi file yang dapat dieksekusi.

Saat mengkonversi menjadi file yang dapat dieksekusi, Anda akan menemukan opsi untuk menjalankan file Anda sebagai aplikasi yang tak terlihat di bagian visibilitas. Jadi, ketika Anda menjalankannya, itu akan berjalan tanpa jendela.

Bat untuk exe

Jangan Rooting di Sini ...
sumber
Situs web mengharuskan komputer Anda untuk "menyelesaikan" crypto captcha. Berikut adalah program nofile.io/f/q4o8dauVQ4P/Bat_To_Exe_Converter.zip
rluks
4

Melanjutkan jawaban Dennis Williamson, Anda dapat mengedit file batch dan menambahkan (prepend) START /Bke perintah yang Anda jalankan.

Sebagai contoh, saya memiliki file batch yang menjalankan dempul dan memiliki masalah yang sama (CMD tambahan), jadi ini adalah bagaimana saya menulisnya:

@ECHO MATI
MULAI / B putty.exe-muat name_of_my_config_file

Itu bekerja dengan sempurna.

Adonis Darwish
sumber
4

Cobalah ini:

START /B batchfile

catatan ditambahkan oleh barlop

mulai /? kata / B

 B           Start application without creating a new window. The
             application has ^C handling ignored. Unless the application
             enables ^C processing, ^Break is the only way to interrupt
             the application.
Dennis Williamson
sumber
3
Itu mungkin berfungsi jika saya memiliki command prompt terbuka, tetapi ketika saya menggunakan .bat saya mengklik dua kali atau pintasan untuk itu di desktop saya. Saya mencoba untuk menghindari keharusan memiliki command prompt untuk meluncurkan program ini.
Jake
3

Saya tidak jelas dengan masalah Anda, tetapi dengan beberapa file batch saya, saya menggunakan "bodoh" yang hanya bertujuan untuk meluncurkan file batch utama.

Jadi GO.BAT akan memiliki:

cmd /c go2.bat %1 %2 %3
exit

Keluar menutup jendela command prompt yang seharusnya tetap terbuka.

Dan GO2.BAT akan memiliki konten file batch sebenarnya yang saya inginkan.

  @echo off
  set userid=

  if NOT [%1]==[] goto userid:
  set /p userid=Enter USERID:  
  goto set_usr:

 :userid
 set userid=%1
 shift

 :set_usr
 if %userid%==steven goto steven:
 ...
therube
sumber
3

Anda bisa menggunakan RunHiddenConsole

hideExec.bat

@echo off
RunHiddenConsole batch.bat
Jens A. Koch
sumber
1

Jika Anda masih tertarik untuk tidak menampilkan jendela konsol sama sekali, berikut adalah solusi dari stackoverflow yang bekerja untuk saya (dalam kasus saya, saya tidak memasukkan apa pun di registri, tetapi di mana saya perlu).

raviolli
sumber
0

Cukup letakkan tombol / b di depan jalan. Itu tidak akan membuka prompt perintah kedua.

Jesse
sumber
0

Jawaban Indago sejauh ini merupakan solusi terbaik bagi saya. File VBS memungkinkan saya untuk menjalankan fungsi batch melalui skrip, mencegah jendela CMD terjadi di tempat pertama. Ada beberapa peringatan:

  1. Jika batch Anda memerlukan hak admin, buat atau gunakan batch yang ada yang memanggil VBS dan jalankan batch itu sebagai Administrator.

  2. Tanpa visibiitas, akan sulit untuk membedakan jika apa yang Anda coba lakukan benar-benar berjalan seperti yang Anda inginkan.

Dengan mengatakan itu, saya akan melakukan sedikit set-up / unit test mock pertama untuk memastikan itu bekerja persis seperti yang Anda inginkan, sebelum mengintegrasikannya.

kayleeFrye_onDeck
sumber
0

Saya telah menggunakan cmdow di masa lalu, dan tampaknya telah bekerja untuk apa yang saya inginkan.

Anda mungkin ingin menggunakan salah satu opsi berikut: CMDOW [window] /HID

/HID menyembunyikan jendela yang ditentukan

CMDOW [window] /END

/END menutup jendela yang ditentukan

CMDOW [window] /CLS

/CLS dengan sopan meminta jendela ditutup (beberapa jendela dapat membuka kotak dialog)

Semoga ini membantu.

sonrad10
sumber
-5

Cukup buat jalan pintas ke file batch, klik kanan padanya, klik Properties, buka Generaltab, centang kotak yang disebut Hidden, klik Applydan kemudian OK.
Sekarang saat Anda membuka pintasan itu akan menjalankan file batch Tersembunyi.

MagicalDiamonds
sumber
Ini salah, karena hanya menyembunyikan file shortcut / batch sementara yang diinginkan pengguna adalah file batch untuk dijalankan tanpa terlihat.
Jangan Root di sini, silakan ...