Windows toplu komut dosyası başlatma programı ve çıkış konsolu


93

Bir programı başlatmak için kullandığım bir toplu komut dosyam var notepad.exe. Çift bu toplu dosyayı tıkladığınızda, not defteri normalde başlar, ancak siyah pencere cmdbaşlattı kimin notepad.exearka planda kalıntıları. notepad.exeCmd penceresini başlatmak ve kaybolmasını sağlamak için ne yapmalıyım ?

edit : kullanmaktan daha karmaşıktır \I.

cmdAramalar cygwinve cygwinbaşlar notepad. kullanırım

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

ve ilk pencere (cmd) kaybolur, ancak ikinci pencere (\ cygwin \ bin \ bash.exe) hala arka planda kalır. Cygwin komut dosyasını kullandım notepad.exe &ve sonra çıktım .

Yanıtlar:


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

Tutun ""başlangıç ve uygulamanız yolu arasında.


Açıklama eklendi:

Normalde aşağıdaki gibi bir toplu iş dosyasından bir program başlattığımızda, OP'nin söylediği gibi arka planda siyah pencerelerimiz olur.

%SystemRoot%\Notepad.exe

Bu, aynı komut isteminde (işlem) çalışan Not Defteri'nden kaynaklanıyordu. Not defteri kapatıldıktan SONRA komut istemi kapanacaktır. Bundan kaçınmak için, bunun startgibi ayrı bir işlemi başlatmak için komutu kullanabiliriz .

start %SystemRoot%\Notepad.exe

Bu komut, yolda boşluk olmadığı sürece iyidir. Yol üzerindeki boşluğu her ihtimale karşı işlemek için, bunun "gibi tırnak işaretleri ekledik .

start "%SystemRoot%\Notepad.exe"

Ancak bu komutu çalıştırmak yalnızca başka bir boş komut istemi başlatır. Neden? Komut istemine bakarsanız start /?, startkomut arasındaki bağımsız değişkeni "başlatacağı yeni komut isteminin başlığı olarak tanıyacaktır . Yani, bunu çözmek için şu komuta sahibiz:

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

İlk argüman ""başlığı (boş olarak belirlediğimiz) ve ikinci argümanı ayarlamaktır. "%SystemRoot%\Notepad.exe" ise çalıştırılacak hedef komuttur (yoldaki boşlukları destekleyen).

Komuta parametreler eklemeniz gerekiyorsa, bunları tırnak içinde ekleyin, yani:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 

12
not: bu şekilde bir java jar dosyasını başlatmak istediğinizde, kullandığınızdan emin olun javaw(sadece çalıştırılabilir java, çünkü javabaşka parti pencere başlayacak): örnstart "" "javaw" -jar C:\JavaProject\myApp.jar
TmTron

@checksum Lütfen, başlatılan uygulamanın standart hatasını ve standart çıktısını nasıl yeniden yönlendireceğiniz konusunda örneğinizi genişletebilir misiniz?
Starfish

@Starfish Bence not defterinde stdout ve stderr yok. Ama sorunuz için, şöyle bir şey olabilir application.exe > stdout.txt 2>stderr.txt. Sorunuzu yukarıdaki cevaba eklemek orijinal posterin sorusundan sapacaktır. Belki daha detaylı sormak için yeni bir soru başlatabilirsiniz.
sağlama toplamı

1
Tamamen anlamsız çözüm. Windows tekrar kazandı.
Ярослав Рахматуллин

9

Kullanın start notepad.exe.

İle daha fazla bilgi edinin start /?.


1
Ve tam olarak hangi argüman? /B? Okudum ama start /B notepad.execmd penceresini kullanırsam kaybolmuyor.
Possa

Tamam, kullanmaktan daha karmaşık \I. Cmd, cygwin'i çağırır ve cygwin not defteri başlatır. Kullanıyorum start \I cygwinve ilk pencere kayboluyor, ancak ikinci bir pencere hala arka planda duruyor. Cygwin komut dosyasını kullandım notepad.exe &ve sonraexit
Possa

cygstart not defteri başlatır, ancak konsol arka planda kalır.
Possa

5

En basit yol, ona başlamaktır start

start notepad.exe

Burada hakkında daha fazla bilgi bulabilirsinizstart


4

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


bu cmd penceresini kapatma%ComSpec% /c emacs.exe "-rv" "--no-splash"
jcubic

0

Hmm ... Bunu toplu iş dosyalarımdan birinde ÇAĞIR veya BAŞLAT kullanmadan yapıyorum:

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

Yine de Cygwin yüklü değil ve Windows XP kullanıyorum.


"The system cannot find the batch label specified - ENDF"Windows 10'da hata var
jcubic

0
start "" ExeToExecute

yöntem benim için Xilinx xsdk durumunda çalışmıyor, çünkü aşağıdaki yorumlarda @jeb tarafından belirtildiği gibi aslında bir bat dosyasıdır.

yani fiilen çalışmayan şey

start "" BatToExecute

Xsdk'yi böyle açmaya çalışıyorum ve kapatılması gereken ayrı bir cmd açıyor ve xsdk kendi kendine çalışabiliyor

Xsdk'yi başlatmadan önce Env / Paths'i ( settings64.bat ile ) çalıştırırım (kaynak), böylece xsdk.bat komutu tanınır (kısaca xsdk, .bat ile birlikte )

.bat ile ne çalışır

call BatToExecute

2
Bu muhtemelen bir soruyu yanıtlıyor, ancak bu değil. Soru, notepad.execmd.exe'den ayırarak bir .exe dosyasını ( ) başlatmakla ilgilidir . Aynı örnekte bir .bat dosyasının nasıl başlatılacağını
yanıtladınız

-4

Başlamayı dene path\to\cygwin\bin\bash.exe


1
Bu, OP'lerin sorusuna gerçekten cevap vermiyor. Nasıl başlayacağını sormuyordu cygwin.
Jeremy J Starcher
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.