Yürütüldüğünde Komut İstemi'ni göstermeyen bir Windows Toplu İş dosyasını nasıl oluşturabilirim? [çift]


58

Komut satırından başlatılan Redcar adında bir yakut taşı kurdum. Çalıştığında, kabuğunu sonlandırıncaya kadar çalar, bu nedenle komut satırında çalışmaya devam etmek için yeni bir kabuk penceresi oluşturmam gerekir. Kullandığım kabuk, MySysGit’in GITBash kabuğu.

Redcar'ı kısayol olarak başlatmak için kullanılan bir Redcar.bat dosyası buldum, sanırım, ancak BAT dosyasını başlattığımda ekstra komut istemi penceresinin açılmasını istemiyorum.

İstemi görmeden BAT'ı nasıl çalıştırırım?


1
Keşke bu + 1'in cevabını iyi bir soru için bilseydim.
Supercereal

@Kyle'ye benzer bir soru sorulmadan önce superuser.com/questions/191149/how-to-execute-cmd-exe-silently HSTART'dan bahseder ve kısaca VBS dosyasının bunu başlatabildiğini
söyler

Seçtiğiniz cevabı güncelleyebilir misiniz? Nasıl olduğunu bildiğiniz zaman mümkün ve çok basit .. toplu iş dosyası: satır 1: set var1=hello.txtsatır 2:start "test" notepad.exe "%~dp0%var1%"
Kody Brown

Basitçe ::veya kullanın @REM. Kaynak: superuser.com/a/843754/101936
PHPst

Yanıtlar:


38

Yapamazsınız - yerleşik Komut İstemi ile bir toplu iş dosyasını çalıştırmak, toplu iş dosyası çıkana kadar bir pencereyi açık tutacaktır.

Ne yapabilirsiniz yapmak toplu iş dosyası mümkün olduğunca çabuk çıkar emin olmak için adımlar atması olduğunu. Mümkünse, herhangi bir programı startkomutla çalıştırmak için toplu iş dosyasını değiştirin . Varsayılan olarak, startprogramın çıkmasını beklemeden hemen döner, böylece toplu iş dosyası çalışmaya devam eder ve büyük olasılıkla derhal çıkar. Toplu iş dosyasını çalıştırmak için kısayolunuzu değiştirmekle, simge durumuna küçültülmüş olarak çalıştırın ve yalnızca ekranda bir pencere görmeden yalnızca görev çubuğunun yanıp sönmesini göreceksiniz.

Bunun bir uyarısı, birçok komut dosyası yorumlayıcısının olduğu bir konsol kipinde bir program çalıştırıyorsanız, toplu iş dosyasının programın çıkmasını bekleyeceği ve kullanmanın startyeni bir konsol penceresi açacağıdır. Bu durumda yapmanız gereken şey, konsol tabanlı yerine tercümanın Windows tabanlı sürümünü çalıştırmaktır - startgerekli değildir. Perl wperl.exeyerine , sen koşarsın perl.exe. Python için onun pythonw.exeyerine python.exe. İndirdiğim eski win32 Ruby dağıtımı rubyw.exeaynı şeyi yapmalı.

Son bir olasılık, komut istemini gizli bir pencerede çalıştırmak için üçüncü taraf bir araç kullanmaktır. Bu tür şeyler duydum ama onları hiç kullanmadım, bu yüzden özellikle sizi işaret edecek hiçbir şey bilmiyorum.


Teşekkürler, sorumu cevaplar. Gerçekten sinir bozucu olan şey, istem penceresinin göründüğü değildi, ancak program çalıştığı sürece açık kalmasıydı. Şimdi flaş tamamen katlanılabilir ve neredeyse sinir bozucu değil. Ruby yerine rubyw çalıştırmak için komut dosyasını değiştirip değiştiremeyeceğimi kontrol edecek
Jake

1
Herhangi bir "pythonw" ile "python" arasındaki farkı açıkladığınız için çok teşekkürler - sonunda arka planda komut istemi olmadan sahip olduğumuz python pencere araçlarını çalıştırmanın çözümünü buldum.
FP

“Java.exe” ve “Javaw.exe” aynıdır.
redbeam_

Yapabilirsin - sadece toplu iş kodunda değil. gerçekten burada burada bir kaç Qs var Komut isteminin nasıl gizleneceği ile ilgili olarak superuser.com/questions/62525/… superuser.com/questions/191149/how-to-execute-cmd-exe-silently
barlop

21

DOS penceresini açmadan bir toplu iş dosyasını çalıştırmak için en kolay ve en kısa çözüm olduğunu düşünüyorum, düzenli aralıklarla çalışacak bir dizi komut zamanlamak istediğinizde çok rahatsız edici olabilir, bu nedenle DOS penceresi açılmaya devam ediyor, işte çözümünüz . Toplu iş dosyasını çağırmak için bir VB Script kullanın ...

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

Yukarıdaki satırları bir düzenleyiciye kopyalayın ve dosyayı .VBS uzantılı kaydedin. .BAT dosya adını ve yolunu uygun şekilde düzenleyin. Sonra sadece .vbs dosyasını çalıştırın ve sihir gerçekleşir!


8

Komut isteminden START / MIN CMD.EXE / C mybatchfile.bat ile başka bir toplu iş dosyasını çalıştırabilirsiniz.

Dışarıdan cmd konsol penceresini getirecektir, ancak bundan kaçınmak için, minimize etmeye başlamak için değiştirilmiş özelliklere sahip bir kısayol dosyası oluşturabilirsiniz .


2
Windows 8.1'de, bu seçenek Özellikler -> Kısayol sekmesi -> Çalıştır: -> Küçültülmüş (varsayılan "Normal Pencere")
pix:

5

Bunu yapmak için , toplu iş dosyanızı yürütülebilir bir dosyaya dönüştürmek üzere Bat To Exe Converter programını kullanın .

Yürütülebilir bir dosyaya dönüştürürken , görünürlük bölümünde dosyanızı Görünmez bir uygulama olarak çalıştırma seçeneği bulacaksınız . Böylece, çalıştırdığınızda, bir pencere olmadan çalışacaktır.

Batmak için yarasa


Web sitesi, bilgisayarınızın kripto captcha'yı "çözmesini" gerektirir. İşte programdır nofile.io/f/q4o8dauVQ4P/Bat_To_Exe_Converter.zip
rluks

4

Dennis Williamson’ın cevabına devam ederek, toplu iş dosyasını düzenleyebilir ve START /Byürüttüğünüz komuta ekleyebilir ( hazırlayabilirsiniz).

Örneğin, macun çalıştıran ve aynı sorunu olan bir toplu iş dosyasına sahibim (ekstra CMD), bu yüzden şöyle yazdım:

@EKO KAPALI
START / B putty.exe - yükleme adı_of_my_config_file

Mükemmel çalıştı.


4

Bunu bir deneyin:

START /B batchfile

barlop tarafından eklenen not

Başlat /? / B diyor

 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.

3
Açık bir komut istemi varsa, işe yarayabilir, ancak .bat kullandığımda masaüstünde bir kısayol veya onu kısayol tıklıyorum. Bu programı başlatmak için komut isteminde bulunmaktan kaçınmaya çalışıyorum.
Jake

3

Sorununuz konusunda net değilim, ancak toplu iş dosyalarımın bazılarında, ana toplu iş dosyasını başlatmak için amaç olan "kukla" kullanıyorum.

Yani GO.BAT sahip olacak:

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

Çıkış, aksi halde açık kalacak olan komut istemi penceresini kapatır.

Ve GO2.BAT aslında istediğim toplu iş dosyası içeriğine sahip olacak.

  @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:
 ...


1

Konsol penceresini hiç göstermemekle hala ilgileniyorsanız, işte benim için çalışan stackoverflow'tan bir çözüm (benim durumumda kayıt defterine bir şey koymadım, ihtiyacım olan yere).


0

Sadece / b düğmesini yolun önüne getirin. İkinci komut istemini açmaz.


0

Indago'nun cevabı şimdiye dek benim için en iyi çözüm oldu. VBS dosyası, partinin işlevselliğini komut dosyası aracılığıyla çalıştırmama izin veriyor ve böylece CMD penceresinin gerçekleşmesini engelliyor. Yine de birkaç uyarı var:

  1. Toplu işiniz yönetici hakları gerektiriyorsa, VBS'yi çağıran ve bu grubu Yönetici olarak çalıştıran mevcut bir toplu iş oluşturun veya kullanın.

  2. Görünürlük olmadan, yapmaya çalıştığınız şeyin gerçekten istediğiniz şekilde çalıştığını anlamak zor olabilir.

Bununla birlikte, entegre etmeden önce tam olarak istediğiniz şekilde çalıştığından emin olmak için önce biraz alaycı kurulum / birim testi koyardım.


0

Geçmişte cmdow kullandım ve istediğim şey için çalıştığım anlaşılıyor.

Muhtemelen aşağıdaki seçeneklerden birini kullanmak isteyeceksiniz: CMDOW [window] /HID

/HID belirtilen pencereyi gizler

CMDOW [window] /END

/END belirtilen pencereyi kapatır

CMDOW [window] /CLS

/CLS kibarca pencerenin kapanmasını istedi (bazı pencereler diyalog kutusu açabilir)

Bu yardımcı olur umarım.


-5

Sadece sağ tıklayın üzerine tıklayın, toplu dosya için bir kısayol yapmak Propertiesgidin Generaldenilen kutuyu sekmesine Hidden, tıklayın Applyardından ve OK.
Şimdi kısayolu açtıkça gizli toplu iş dosyasını çalıştırır.


Bu yanlıştır, kısayol / toplu iş dosyasını gizlerken, kullanıcının istediği görünmez bir şekilde çalıştırmak için kullanılan bir toplu iş dosyasıdır.
Burada Root etmeyin plz ...
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.