Na razie mój plik wsadowy wygląda następująco:
myprogram.exe param1
Program uruchamia się, ale okno DOS pozostaje otwarte. Jak mogę to zamknąć?
Na razie mój plik wsadowy wygląda następująco:
myprogram.exe param1
Program uruchamia się, ale okno DOS pozostaje otwarte. Jak mogę to zamknąć?
Odpowiedzi:
Możesz użyć słowa kluczowego exit. Oto przykład z jednego z moich plików wsadowych:
start myProgram.exe param1
exit
exit
w pliku wsadowym.
start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Użyj polecenia start, aby zapobiec oczekiwaniu pliku wsadowego na program. Pamiętaj tylko, aby umieścić pusty podwójny cudzysłów przed programem, który chcesz uruchomić po „Start”. Na przykład jeśli chcesz uruchomić program Visual Studio 2012 z polecenia wsadowego:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
zwróć uwagę na podwójny cytat po uruchomieniu.
start <window name> <program name>
Spójrz na polecenie START, możesz to zrobić:
START rest-of-your-program-name
Na przykład ten plik wsadowy będzie czekał na zamknięcie notatnika:
@echo off
notepad c:\test.txt
Nie spowoduje to jednak:
@echo off
start notepad c:\test.txt
Z mojego własnego pytania :
start /b myProgram.exe params...
działa, jeśli uruchomisz program z istniejącej sesji DOS.
Jeśli nie, wywołaj skrypt VB
wscript.exe invis.vbs myProgram.exe %*
Metoda Run () Windows Script Host Run () przyjmuje:
Oto 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
Jest to jedyna rzecz, która działała dla mnie, gdy próbowałem uruchomić klasę Java z pliku wsadowego:
start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm
Możesz dostosować start
komendę do swojego projektu, postępując zgodnie z odpowiednią składnią:
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)
Powinieneś spróbować. Uruchamia program bez okna. W rzeczywistości miga na sekundę, ale szybko znika.
start "name" /B myprogram.exe param1
"title"
Opcja jest ważna. Jeśli ścieżka programu zawiera spacje, musi być ujęta w cudzysłów, dlatego musimy dodać, "title"
aby uniknąć niepowodzenia.
Jak rozwiązać „problem z przestrzenią” i lokalne zależności:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
Mnóstwo odpowiedzi na to pytanie już, ale piszę to, aby wyjaśnić coś ważnego, chociaż nie zawsze tak jest:
Start "C:\Program Files\someprog.exe"
Może to powodować problemy w niektórych wersjach systemu Windows, ponieważ Start
faktycznie oczekuje, że pierwszy zestaw znaków cudzysłowu będzie tytułem systemu Windows. Najlepszą praktyką jest najpierw podwójne zacytowanie komentarza lub pustego komentarza:
Start "" "C:\Program Files\someprog.exe"
lub
Start "Window Title" "C:\Program Files\someprog.exe"
Moje rozwiązanie, aby to zrobić z GUI:
Utwórz skrót do programu, który chcesz uruchomić;
Edytuj właściwości skrótu;
Zmień TARGET
pole na %COMSPEC% /C "START "" "PROGRAMNAME""
;
Zmień RUN
pole na zminimalizowane.
Gotowy! Zobacz, jak ci się podoba ...
PS: Parametry programu można wstawić pomiędzy dwa końcowe znaki cudzysłowu; PROGRAMNAME
ciąg może być zarówno nazwa pliku, krewny lub ścieżka bezwzględna - gdy włożysz bezwzględną ścieżkę i usunąć literę dysku i średnik, to będzie działać w thumbdrive Nieważne co pisma przypisuje komputer hosta do niego .. . (także, jeśli umieścić skrót w tym samym folderze i poprzedzić nazwę pliku programu w PROGRAMNAME
przy %CD%
zmiennej, ścieżki będzie zawsze pasuje; sama sztuczka może być stosowany w START IN
polu).
Jeśli ten plik wsadowy jest czymś, co chcesz uruchomić zgodnie z harmonogramem lub zawsze; możesz użyć narzędzia do planowania systemu Windows i nie otwiera się ono w oknie, gdy uruchamia plik wsadowy.
Aby otworzyć Task Scheduler
:
'cmd'
taskschd.msc
-> enterPo prawej stronie kliknij Create Basic Task
i postępuj zgodnie z menu.
Mam nadzieję że to pomoże.
Oto moje preferowane rozwiązanie. Został zaczerpnięty z odpowiedzi na podobne pytanie.
Użyj skryptu VBS, aby wywołać plik wsadowy:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
Skopiuj powyższe wiersze do edytora i zapisz plik z rozszerzeniem .VBS.