Jak utworzyć plik wsadowy systemu Windows, który nie wyświetla wiersza polecenia po uruchomieniu? [duplikować]


58

Zainstalowałem rubinowy klejnot o nazwie Redcar, który jest uruchamiany z wiersza poleceń. Kiedy działa, kradnie powłokę, dopóki się nie skończy, więc muszę utworzyć nowe okno powłoki, aby kontynuować pracę z wierszem poleceń. Powłoka, której używam, to powłoka GITBash od MySysGit.

Znalazłem plik Redcar.bat, który ma uruchamiać Redcar jako skrót, jak sądzę, ale nie chcę, aby dodatkowe okno wiersza polecenia otwierało się przy każdym uruchomieniu pliku BAT.

Jak po prostu uruchomić BAT bez wyświetlania monitu?


1
Chciałbym znać odpowiedź na to +1 za dobre pytanie.
Supercereal

@Kyle podobne pytanie zostało zadane przed superuser.com/questions/191149/how-to-execute-cmd-exe- po cichu wspomina o HSTART i krótko wspomina, że ​​plik VBS może go również uruchomić
barlop

Czy możesz zaktualizować wybraną odpowiedź? Czy jest to możliwe i bardzo proste, gdy wiesz jak ... plik wsadowy: linia 1: set var1=hello.txtlinia 2:start "test" notepad.exe "%~dp0%var1%"
Kody Brown

Po prostu użyj ::lub @REM. Źródło: superuser.com/a/843754/101936
PHPst

Odpowiedzi:


38

Nie możesz - wykonanie pliku wsadowego za pomocą wbudowanego wiersza polecenia spowoduje, że okno pozostanie otwarte, dopóki plik wsadowy nie zostanie zamknięty.

Co można zrobić, to podjąć kroki, aby upewnić się, że plik wsadowy wychodzi tak szybko, jak to możliwe. Jeśli to możliwe, zmodyfikuj plik wsadowy, aby uruchomić dowolny program z startpoleceniem. Domyślnie startwraca natychmiast, nie czekając na zamknięcie programu, więc plik wsadowy będzie nadal działał i prawdopodobnie natychmiast zakończy działanie. W połączeniu ze zmodyfikowaniem skrótu, aby uruchomić plik wsadowy zminimalizowany, zobaczysz tylko pasek zadań migający, nawet nie widząc okna na ekranie.

Jednym zastrzeżeniem jest to, że jeśli używasz programu w trybie konsoli, którym jest wiele interpreterów skryptów, plik wsadowy będzie czekał na zakończenie programu, a użycie startspowoduje odrodzenie nowego okna konsoli. W tym przypadku musisz uruchomić wersję interpretera opartą na Windows zamiast konsoli - nie jest to startkonieczne. W przypadku Perla uruchomiłeś wperl.exezamiast perl.exe. W przypadku Pythona jest to pythonw.exezamiast python.exe. Pobrana przeze mnie stara dystrybucja Ruby Win32 rubyw.exe, która powinna zrobić to samo.

Ostatnią możliwością jest użycie narzędzia innej firmy do uruchomienia wiersza polecenia z ukrytym oknem. Słyszałem o takich rzeczach, ale nigdy nie miałem z nich pożytku, więc nie znam niczego konkretnego, co mogłoby cię wskazać.


Dzięki, że odpowiada na moje pytanie. Naprawdę denerwujące nie było to, że pojawiło się okno zachęty, ale musiało ono pozostać otwarte, dopóki program był uruchomiony. Teraz flash jest całkowicie znośny i nie tak irytujący. Sprawdzę, czy mogę zmodyfikować skrypt, aby uruchamiał rubyw zamiast ruby.
Jake

1
Wielkie dzięki za wyjaśnienie różnicy między „python” a „pythonw” - w końcu znalazłem rozwiązanie do uruchomienia narzędzi do okna python, które mamy bez wiersza polecenia w tle.
FP

´java.exe´ i ´javaw.exe´ są takie same.
redbeam_

Możesz - po prostu nie w samym kodzie wsadowym. naprawdę jest tutaj wiele
pytań z pytaniem

21

Myślę, że jest to najłatwiejsze i najkrótsze rozwiązanie do uruchamiania pliku wsadowego bez otwierania okna DOS, może być bardzo rozpraszające, gdy chcesz zaplanować okresowe uruchamianie zestawu poleceń, więc okno DOS ciągle się wyświetla, oto twoje rozwiązanie . Użyj skryptu VB, aby wywołać plik wsadowy ...

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

Skopiuj powyższe wiersze do edytora i zapisz plik z rozszerzeniem .VBS. Edytuj odpowiednio nazwę pliku i ścieżkę .BAT. Następnie wystarczy uruchomić plik .vbs i magia się dzieje!


8

Możesz uruchomić inny plik wsadowy za pomocą START / MIN CMD.EXE / C mybatchfile.bat z poziomu wiersza polecenia.

Z zewnątrz pojawi się okno konsoli cmd, ale aby tego uniknąć, możesz utworzyć plik skrótu z właściwościami zmodyfikowanymi w celu zminimalizowania .


2
W Windows 8.1 ta opcja znajduje się we Właściwościach -> zakładka Skrót -> Uruchom: -> Zminimalizowane (domyślnie „Normalne okno”)
pix


4

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

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

@ECHO OFF
START / B putty.exe -load name_of_my_config_file

Działa idealnie.


4

Wypróbuj to:

START /B batchfile

notatka dodana przez barlop

początek /? 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
Może to działać, jeśli mam otwarty wiersz polecenia, ale kiedy używam .bat, dwukrotnie go klikam lub skrót do niego na pulpicie. Staram się unikać konieczności posiadania wiersza polecenia, aby uruchomić ten program.
Jake,

3

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

GO.BAT będzie miał:

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

Wyjście zamyka okno wiersza poleceń, które w innym przypadku pozostałyby otwarte.

A GO2.BAT będzie zawierał zawartość pliku wsadowego, której chciałbym.

  @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

Jeśli nadal nie chcesz pokazywać okna konsoli, oto rozwiązanie z stackoverflow, które działało dla mnie (w moim przypadku nie wpisałem niczego do rejestru, ale tam, gdzie było to potrzebne).


0

Wystarczy umieścić przełącznik / b przed ścieżką. Nie otworzy drugiego wiersza polecenia.


0

Jak dotąd odpowiedź Indago była dla mnie najlepszym rozwiązaniem. Plik VBS pozwala mi uruchomić funkcjonalność partii za pomocą skryptu, zapobiegając przede wszystkim działaniu okna CMD. Jest jednak kilka zastrzeżeń:

  1. Jeśli partia wymaga uprawnień administratora, utwórz lub użyj istniejącej partii, która wywołuje VBS i uruchom ją jako Administrator.

  2. Bez widoczności może być trudno stwierdzić, czy to, co próbujesz zrobić, działa tak, jak chcesz.

Mając to na uwadze, najpierw zintegruję trochę próbnej konfiguracji / testu jednostkowego, aby upewnić się, że działa dokładnie tak, jak chcesz, zanim go zintegrujesz.


0

Użyłem cmdow w przeszłości, i wydaje się, że pracował na to, co chcę.

Prawdopodobnie będziesz chciał użyć 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ł okno o zamknięcie (niektóre okna mogą otwierać okno dialogowe)

Mam nadzieję że to pomoże.


-5

Po prostu zrób skrót do pliku wsadowego, kliknij go prawym przyciskiem myszy, kliknij Properties, przejdź do Generalkarty, zaznacz pole o nazwie Hidden, kliknij, Applya następnie OK.
Teraz, gdy otworzysz skrót, uruchomi on plik wsadowy Ukryty.


Jest to błędne, ponieważ po prostu ukrywa plik skrótu / pliku wsadowego, podczas gdy użytkownik chce, aby plik wsadowy działał niewidocznie.
Nie rootuj tutaj, proszę ...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.