Program başladıktan sonra konsolu açık bırakmadan bir toplu iş dosyasından programı nasıl çalıştırabilirim?


184

Şimdilik toplu iş dosyam şöyle:

myprogram.exe param1

Program başlar ancak DOS Penceresi açık kalır. Nasıl kapatabilirim?


3
Muhtemelen kabul edilen cevabı Marshall'ın gönderdiği cevapla değiştirmelisiniz.
Rev1.0

Yanıtlar:


163

Exit anahtar sözcüğünü kullanabilirsiniz. İşte toplu iş dosyalarımdan bir örnek:

start myProgram.exe param1
exit

18
Konsolu bir toplu iş dosyasına çift tıklamak yerine etkileşimli olarak kullanıyorsanız, bunun güzel bir şey olmayacağını unutmayın. Genellikle exitbir toplu iş dosyasına koymaya gerek yoktur .
Joey

27
Win8'de bu komutu denedim. Farklı olup olmadığından emin değilim, ancak ilk parametreniz olarak bir Pencere başlığı sağlamanız gerektiğini unutmayın. Patrick'in tanımladığı şekilde çalıştırdığımda, pencere başlığı olarak "myProgram.exe" ile yeni bir komut istemi açacaktı:start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Adam Plocher

9
Komutunuz boşluk içeriyorsa ve onu tırnak içine alırsanız, START'ın ilk alıntılanan parametreyi pencere adı olarak ve yalnızca devam eden ikinci parametreyi komut adı olarak yorumladığı için komuttan önce fazladan alıntılanmış bir parametre eklemeniz gerektiğini unutmayın.
David Balažic

259

Toplu iş dosyasının programı beklemesini önlemek için start komutunu kullanın. "Başlat" ın ardından çalıştırmak istediğiniz programın önüne boş bir çift tırnak koymayı unutmayın. Örneğin, bir toplu iş komutundan Visual Studio 2012'yi çalıştırmak istiyorsanız:

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

başladıktan sonra çift tırnak dikkat edin.


55
@SharkAlley Uygun biçimstart <window name> <program name>
Kruug

5
Bu doğru cevap. Teşekkürler, boş çift tırnak tam olarak ihtiyacım olan şey.
Richard

Haftalık olarak çalıştığım ve her hafta bu kadar hafifçe değiştirdiğim bir yedekleme komut dosyasına sahibim, a) programımı kapatmaya, b) verilerimi yedeklemeye ve c) programı yeniden başlatmaya ve komut istemini kapatmaya çalışıyorum. Bu nihayet kapatmak için komut istemi var (ayrıca bir sonraki yedeklemenin tetiklenmesini engelledi, bu komut istemini kapatmak zorunda kaldım !!!).
NobleUplift

@NobleUplift: Benim için bu çalıştı, .. aşağıda tam satır, Başlat "" "C: \ Program Files (x86) \ JetBrains \ IntelliJ IDEA 2016.2.5 \ bin \ idea64.exe" &
Xinus

53

BAŞLAT komutuna bakın, bunu yapabilirsiniz:

START rest-of-your-program-name

Örneğin, bu toplu iş dosyası not defteri çıkana kadar bekleyecektir:

@echo off
notepad c:\test.txt

Ancak, bu olmaz:

@echo off
start notepad c:\test.txt

31

Benim itibaren kendi soru :

start /b myProgram.exe params...

programı varolan bir DOS oturumundan başlatırsanız çalışır.

Değilse, vb komut dosyasını çağırın

wscript.exe invis.vbs myProgram.exe %*

Windows Komut Dosyası Çalıştır () yöntemi alır:

  • intWindowStyle: 0 "görünmez pencereler" anlamına gelir
  • bWaitOnReturn: false, ilk komut dosyanızın ikinci komut dosyanızın bitmesini beklemesi gerekmediği anlamına gelir

İşte 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

1
+1 Daha kolay bir yol olmalı, ama benim için çalışan tek cevap bu.
DN

Teşekkürler - bu / b bayrağı tam olarak aradığım şeydi.
ap

21

Bir toplu iş dosyasından bir java sınıfı çalıştırmayı denediğimde benim için çalışan tek şey:

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

startDoğru sözdizimini izleyerek komutu projeniz için istediğiniz gibi özelleştirebilirsiniz :

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)

18

Bunu denemelisin. Programı penceresiz olarak başlatır. Aslında bir saniyeliğine yanıp sönüyor ancak oldukça hızlı bir şekilde yok oluyor.

start "name" /B myprogram.exe param1

4
"title"Seçenek önemlidir. Programın yolu boşluk içeriyorsa, tırnak işaretleri içine alınmalıdır, bu nedenle "title"hatadan kaçınmak için eklememiz gerekir.
AD

1
Ana pencereyi kapatırsanız, 'myprogram.exe' arka plan işlemi de kapanır.
Aditya Gupta

14

"Uzay sorunu" ve yerel bağımlılıklar nasıl çözülür:

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

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

exit

Bu sorunun cevabı değil
jeb

2
doğru, ama bence sahip olduğum diğer sorunları da çözen iyi bir çözüm.
Gilco

2
Benim için çözümdü. Dos penceresi açılır ancak tekrar kapanır ve çözüm çalışır. Downvotes (i upvoted) anlamıyorum
JoeFox

Ben de değil. çözüm işe yarıyor ve sorunu
çözüyor

2

Zaten bu soru için bir sürü cevap, ama ben her zaman böyle olmayabilir, ancak önemli bir şeyi açıklığa kavuşturmak için bunu gönderiyorum:

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

Startİlk tırnak işareti kümesinin bir windows başlığı olmasını beklediği için bazı Windows sürümlerinde sorunlara neden olabilir . Bu nedenle, bir yorumu veya boş bir yorumu ilk kez iki kez alıntılamak en iyi uygulamadır:

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

veya

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

0

GUI bunu yapmak için benim çözüm:

  1. Çalıştırmak istediğiniz program için bir kısayol oluşturun;

  2. Kısayolun özelliklerini düzenleyin;

  3. Değişim TARGETalanını %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Değişim RUNalanını minimize etmek.

Hazır! Nasıl sevdiğini görün ...

PS: Program parametreleri iki son tırnak işareti arasına eklenebilir; PROGRAMNAMEdize dosya adı, bir akraba veya mutlak yolu olabilir - Eğer mutlak bir yol koymak ve sürücü harfi ve noktalı virgül silerseniz, o zaman bu bir çalışacak hangi harf ana bilgisayar atar buna olursa olsun thumbdrive .. . (aynı klasörde kısayol yerleştirmek ve program dosya adını önce eğer aynı zamanda, PROGRAMNAMEbirlikte %CD%değişken, yollar hep maç olacak; aynı numara kullanılabilir START INalana).


0

Bu toplu iş dosyası zamanlanmış veya her zaman olduğu gibi çalıştırmak istediğiniz bir şeyse; Windows zamanlama aracını kullanabilirsiniz ve toplu iş dosyasını başlattığında bir pencerede açılmaz.

Açmak için Task Scheduler:

  • Başlat -> Çalıştır / Ara -> 'cmd'
  • Yaz taskschd.msc-> girin

Sağ taraftan, Create Basic Taskmenüleri tıklayın ve izleyin.

Bu yardımcı olur umarım.


0

İşte benim tercih ettiğim çözüm. Benzer bir sorunun cevabından alınır .

Toplu iş dosyasını çağırmak için bir VBS Komut Dosyası kullanın:

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

Yukarıdaki satırları bir düzenleyiciye kopyalayın ve dosyayı .VBS uzantısıyla kaydedin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.