2011-01-14 18:23:22 +0000 2011-01-14 18:23:22 +0000
59
59

Jak utworzyć plik wsadowy Windows, który nie pokazuje Wiersza polecenia podczas wykonywania?

Zainstalowałem rubinowy klejnot o nazwie Redcar, który jest uruchamiany z linii poleceń. Kiedy działa, kradnie on powłokę, aż do jej zakończenia, więc muszę utworzyć nowe okno powłoki, aby kontynuować pracę z wiersza poleceń. Powłoka, której używam, to powłoka GITBash z MySysGit.

Znalazłem plik Redcar.bat, który ma uruchamiać Redcar'a jako skrót, jak przypuszczam, ale nie chcę, aby dodatkowe okno zachęty komend otwierało się przy każdym uruchomieniu pliku BAT.

Jak po prostu uruchomić BAT bez zobaczenia zachęty?

Odpowiedzi (11)

38
38
38
2011-01-21 18:41:45 +0000

Nie możesz - wykonanie pliku wsadowego z wbudowanym Promptem Poleceń spowoduje, że okno pozostanie otwarte do momentu wyjścia pliku wsadowego.

To, co możesz _zrobić, to podjąć kroki, aby upewnić się, że plik wsadowy zakończy się tak szybko, jak to możliwe. Jeśli jest to w ogóle możliwe, zmodyfikuj plik wsadowy, aby uruchomić dowolny program za pomocą polecenia start. Domyślnie start wraca natychmiast, nie czekając na zakończenie programu, więc plik wsadowy będzie kontynuował pracę i, przypuszczalnie, wyjdzie natychmiast. W połączeniu z modyfikacją skrótu do uruchomienia pliku wsadowego minimalizujemy to do minimum, a pasek zadań będzie migał, nie widząc nawet okna na ekranie.

Jedno zastrzeżenie do tego jest takie, że jeśli uruchamiasz program w trybie konsolowym, którym jest wiele interpretatorów skryptów, plik wsadowy będzie czekał na wyjście programu, a użycie start spowoduje powstanie nowego okna konsoli. To, co musisz zrobić w tym przypadku, to uruchomić wersję interpretera opartą na Windowsie zamiast na konsoli - nie ma potrzeby korzystania z start. W przypadku Perla, zamiast wperl.exe uruchomiłbyś perl.exe. W przypadku Pythona, jest to pythonw.exe zamiast python.exe. Stara dystrybucja Win32 Ruby, którą ściągnąłem ma rubyw.exe, która powinna zrobić to samo.

Ostatnią możliwością jest użycie zewnętrznego narzędzia do uruchomienia zachęty komend z ukrytym oknem. Słyszałem o takich rzeczach, ale nigdy nie miałem z nich pożytku, więc nie wiem o niczym szczególnym, co wskazywałoby na ciebie.

22
22
22
2014-01-15 06:25:25 +0000

Myślę, że jest to najprostsze i najkrótsze rozwiązanie do uruchomienia pliku wsadowego bez otwierania okna DOS-u, może to być bardzo rozpraszające, gdy chcesz zaplanować zestaw poleceń do okresowego uruchamiania, więc okno DOS-u ciągle się pojawia, oto twoje rozwiązanie. Użyj skryptu VB do wywołania pliku wsadowego …

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

Skopiuj powyższe linie do edytora i zapisz plik z rozszerzeniem .VBS. Edytuj odpowiednio nazwę pliku .BAT i ścieżkę dostępu. Następnie wystarczy uruchomić plik .vbs i nastąpi magia!

8
8
8
2013-01-02 05:37:05 +0000

Możesz uruchomić inny plik wsadowy z START /MIN CMD.EXE /C mybatchfile.bat z wewnątrz wiersza poleceń.

Z zewnątrz przyniesie okno konsoli cmd, ale aby tego uniknąć, możesz tworzyć skrót plik z właściwościami zmodyfikowanymi do start zminimalizowany.

5
5
5
2016-09-11 08:06:00 +0000

Aby to zrobić, użyj programu Bat To Exe Converter do konwersji pliku wsadowego na plik wykonywalny.

Podczas konwersji na plik wykonywalny, w sekcji widoczności znajdziesz opcję uruchomienia pliku jako Invisible application. Tak więc, gdy ją uruchomisz, będzie ona działać bez okna.

4
4
4
2012-12-18 07:07:00 +0000

Kontynuując odpowiedź Dennisa Williamsona, możesz edytować plik wsadowy i dołączyć (prepend) START /B do wykonywanego polecenia.

Na przykład, mam plik wsadowy, który uruchamia kit i miał ten sam problem (dodatkowa CMD), więc tak to napisałem:

@ECHO OFF START /B putty.exe -load _name\_of\_my\_config\_file_

To działało doskonale.

4
4
4
2011-01-14 19:32:24 +0000

Daj temu spróbować:

START /B batchfile

** przypis dodany przez barlop**

start /? mówi o /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.
3
3
3
2015-04-25 09:00:42 +0000

Możesz użyć RunHiddenConsole

hideExec.bat

@echo off
RunHiddenConsole batch.bat
3
3
3
2011-01-21 18:20:43 +0000

Nie jestem pewien, co do twojego problemu, ale w przypadku niektórych moich plików wsadowych używam “atrapy”, której jedynym celem jest uruchomienie głównego pliku wsadowego.

Więc GO.BAT będzie miał:

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

Wyjście zamyka okno wiersza poleceń, które w przeciwnym razie pozostawałyby otwarte.

A GO2.BAT będzie miał faktycznie taką zawartość pliku wsadowego, jaką ja chcę.

@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:
 ...
0
0
0
2013-03-04 00:36:09 +0000

Wystarczy umieścić przełącznik /b przed ścieżką. Nie otworzy drugiej komendy.

0
0
0
2014-10-18 16:43:48 +0000

Odpowiedź Indago był najlepszym rozwiązaniem dla mnie do tej pory. Plik VBS pozwala mi uruchomić funkcjonalność wsadu poprzez skrypt, zapobiegając w ten sposób w pierwszej kolejności powstawaniu okna CMD. Jest jednak kilka zastrzeżeń:

  1. Jeśli Twój batch wymaga uprawnień administratora, utwórz lub wykorzystaj istniejący batch, który wywołuje VBS i uruchom go jako administrator.

  2. Bez widoczności, może być trudne do rozpoznania, czy to, co próbujesz zrobić, jest rzeczywiście uruchomiony w sposób, który chcesz.

Z tym powiedziałem, chciałbym umieścić trochę mock set-up/unit test up pierwszy, aby upewnić się, że działa dokładnie tak, jak chcesz, przed zintegrowaniem go.

0
0
0
2016-05-20 07:11:31 +0000

Używałem cmdow w przeszłości, i wygląda na to, że zadziałało na co chciałem.

Pewnie będziesz chciał skorzystać z jednej z następujących opcji:CMDOW [window] /HID

/HID ukrywa określone okno

CMDOW [window] /END

/END zamyka określone okno

CMDOW [window] /CLS

/CLS uprzejmie poprosiłem o zamknięcie okna (niektóre okna mogą otworzyć okno dialogowe)

Mam nadzieję, że to pomoże.