Bagaimana saya bisa menjalankan program dari file batch tanpa membiarkan konsol terbuka setelah program dimulai?

184

Untuk saat ini file batch saya terlihat seperti ini:

myprogram.exe param1

Program dimulai tetapi Window DOS tetap terbuka. Bagaimana saya bisa menutupnya?

Tuan Dev
sumber
3
Anda mungkin harus mengubah jawaban yang diterima ke jawaban yang diposting Marshall.
Rev1.0

Jawaban:

163

Anda dapat menggunakan kata kunci keluar. Ini adalah contoh dari salah satu file batch saya:

start myProgram.exe param1
exit
Patrick Desjardins
sumber
18
Perhatikan bahwa ini tidak akan menjadi hal yang baik jika Anda menggunakan konsol secara interaktif, bukan hanya mengklik dua kali pada file batch. Umumnya ada sedikit atau tidak perlu dimasukkan exitke dalam file batch.
Joey
27
Saya mencoba perintah ini di Win8. Saya tidak yakin apakah itu berbeda, tetapi perhatikan bahwa Anda harus memberinya judul Window sebagai parameter pertama Anda. Ketika saya menjalankannya seperti yang dijelaskan Patrick, itu akan membuka command prompt baru dengan "myProgram.exe" sebagai judul jendela:start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Adam Plocher
9
Perhatikan bahwa jika perintah Anda berisi spasi dan Anda memasukkannya ke dalam tanda kutip, Anda harus menambahkan parameter tambahan yang dikutip sebelumnya, karena START mengartikan parameter yang dikutip pertama sebagai nama jendela dan hanya parameter kedua berikut sebagai nama perintah.
David Balažic
259

Gunakan perintah mulai untuk mencegah file batch menunggu program. Ingatlah untuk meletakkan tanda kutip ganda kosong di depan program yang ingin Anda jalankan setelah "Mulai". Misalnya, jika Anda ingin menjalankan Visual Studio 2012 dari perintah batch:

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

perhatikan kutipan ganda setelah mulai.

Marshall
sumber
55
@SharkAlley Format yang tepat adalahstart <window name> <program name>
Kruug
5
Ini jawaban yang benar. Terima kasih, tanda kutip ganda kosong adalah persis apa yang saya butuhkan.
Richard
Saya memiliki skrip cadangan yang saya jalankan setiap minggu dan akan memodifikasinya sedikit setiap minggu, mencoba untuk membuatnya ke) tutup program saya, b) cadangan data saya, dan c) restart program dan tutup command prompt. Perintah ini akhirnya ditutup untuk meminta perintah (juga mencegah pencadangan saya berikutnya, saya harus menutup prompt perintah itu !!!).
NobleUplift
@NobleUplift: Bagi saya ini berhasil, .. di bawah ini adalah baris yang tepat, Mulai "" "C: \ Program Files (x86) \ JetBrains \ IntelliJ IDEA 2016.2.5 \ bin \ idea64.exe" &
Xinus
53

Lihatlah perintah MULAI, Anda dapat melakukan ini:

START rest-of-your-program-name

Misalnya, file batch ini akan menunggu hingga notepad keluar:

@echo off
notepad c:\test.txt

Namun, ini tidak akan:

@echo off
start notepad c:\test.txt
Lasse V. Karlsen
sumber
31

Dari pertanyaan saya sendiri :

start /b myProgram.exe params...

berfungsi jika Anda memulai program dari sesi DOS yang ada.

Jika tidak, hubungi skrip vb

wscript.exe invis.vbs myProgram.exe %*

Metode Windows Script Host Run () mengambil:

  • intWindowStyle: 0 berarti "jendela tak terlihat"
  • bWaitOnReturn: false berarti skrip pertama Anda tidak perlu menunggu skrip kedua selesai

Inilah invis.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
VONC
sumber
1
+1 Pasti ada cara yang lebih mudah, tetapi ini adalah satu-satunya jawaban yang bekerja untuk saya.
DN
Terima kasih - bahwa / b flag adalah persis apa yang saya cari.
ap
21

Ini adalah satu-satunya hal yang bekerja untuk saya ketika saya mencoba menjalankan kelas java dari file batch:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

Anda dapat menyesuaikan startperintah sesuai keinginan untuk proyek Anda, dengan mengikuti sintaks yang tepat:

Syntax
      START "title" [/Dpath] [options] "command" [parameters]

Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command

Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class

   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.

   Options for 16-bit WINDOWS programs only

   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)
Zosimas
sumber
18

Anda harus mencoba ini. Ini memulai program tanpa jendela. Ini sebenarnya berkedip untuk sesaat tetapi hilang cukup cepat.

start "name" /B myprogram.exe param1
Chris Dail
sumber
4
The "title"pilihan adalah penting. Jika path dari program termasuk spasi, harus diapit tanda kutip sehingga kita harus menambahkan "title"untuk menghindari kegagalan.
AD
1
Jika Anda menutup jendela utama, proses latar belakang 'myprogram.exe' juga ditutup.
Aditya Gupta
14

Cara mengatasi "masalah ruang" dan dependensi lokal:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit
Gilco
sumber
Ini bukan jawaban untuk pertanyaan
jeb
2
benar, tapi saya pikir itu memberikan solusi yang baik yang memecahkan masalah lain yang saya miliki juga.
Gilco
2
Adalah solusi bagi saya. Jendela Dos terbuka tetapi tertutup lagi dan solusinya bekerja. Saya tidak mengerti downvotes (saya
terbalik
Begitu juga dengan saya. solusinya bekerja, dan selesaikan masalahnya
Gilco
2

Sudah banyak jawaban untuk pertanyaan ini, tetapi saya memposting ini untuk mengklarifikasi sesuatu yang penting, meskipun ini mungkin tidak selalu terjadi:

Start "C:\Program Files\someprog.exe"

Mungkin menyebabkan masalah di beberapa versi windows karena Startsebenarnya mengharapkan set pertama tanda kutip menjadi judul windows. Jadi itu praktik terbaik untuk pertama kali mengutip dua kali komentar, atau komentar kosong:

Start "" "C:\Program Files\someprog.exe"

atau

Start "Window Title" "C:\Program Files\someprog.exe"
Gerhard
sumber
0

Solusi saya untuk melakukan ini dari GUI:

  1. Buat pintasan ke program yang ingin Anda jalankan;

  2. Edit properti pintasan;

  3. Ubah TARGETfield menjadi %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Ubah RUNfield menjadi diminimalkan.

Siap! Lihat bagaimana Anda menyukainya ...

PS: Parameter program dapat dimasukkan di antara dua tanda kutip akhir; yang PROGRAMNAMEstring dapat berupa nama file, kerabat atau path absolut - jika Anda masukkan ke dalam path absolut dan menghapus huruf drive dan titik koma, maka ini akan bekerja dalam thumbdrive tidak peduli apa surat yang ditunjuk komputer host untuk itu .. (juga, jika Anda menempatkan pintasan di folder yang sama dan mendahului nama file program PROGRAMNAMEdengan %CD%variabel, path akan selalu cocok; trik yang sama dapat digunakan di START INlapangan).

Midas
sumber
0

Jika file batch ini adalah sesuatu yang ingin Anda jalankan sesuai jadwal atau selalu; Anda dapat menggunakan alat jadwal windows dan itu tidak terbuka di jendela ketika memulai file batch.

Untuk membuka Task Scheduler:

  • Mulai -> Jalankan / Cari -> 'cmd'
  • Ketik taskschd.msc-> masukkan

Dari sisi kanan, klik Create Basic Taskdan ikuti menu.

Semoga ini membantu.

Leustad
sumber
0

Inilah solusi pilihan saya. Ini diambil dari jawaban untuk pertanyaan serupa.

Gunakan VBS Script untuk memanggil file batch:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

Salin baris di atas ke editor dan simpan file dengan ekstensi .VBS.

Ilyich
sumber