Per il momento il mio file batch è simile al seguente:
myprogram.exe param1
Il programma si avvia ma la finestra DOS rimane aperta. Come posso chiuderlo?
Per il momento il mio file batch è simile al seguente:
myprogram.exe param1
Il programma si avvia ma la finestra DOS rimane aperta. Come posso chiuderlo?
Risposte:
È possibile utilizzare la parola chiave exit. Ecco un esempio da uno dei miei file batch:
start myProgram.exe param1
exit
exit
un file batch.
start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Utilizzare il comando start per impedire al file batch di attendere il programma. Basta ricordare di mettere una doppia virgoletta vuota davanti al programma che si desidera eseguire dopo "Start". Ad esempio, se si desidera eseguire Visual Studio 2012 da un comando batch:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
notare la doppia citazione dopo l'inizio.
start <window name> <program name>
Guarda il comando START, puoi farlo:
START rest-of-your-program-name
Ad esempio, questo file batch attenderà fino alla chiusura del blocco note:
@echo off
notepad c:\test.txt
Tuttavia, questo non:
@echo off
start notepad c:\test.txt
Dalla mia stessa domanda :
start /b myProgram.exe params...
funziona se si avvia il programma da una sessione DOS esistente.
Altrimenti, chiama uno script vb
wscript.exe invis.vbs myProgram.exe %*
Il metodo Run () di Windows Script Host accetta:
Ecco 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
Questa è l'unica cosa che ha funzionato per me quando ho provato a eseguire una classe Java da un file batch:
start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm
Puoi personalizzare il start
comando come desideri per il tuo progetto, seguendo la sintassi corretta:
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)
Dovresti provare questo. Avvia il programma senza finestra. In realtà lampeggia per un secondo ma scompare abbastanza rapidamente.
start "name" /B myprogram.exe param1
"title"
opzione è importante. Se il percorso del programma include spazi, deve essere racchiuso tra virgolette, quindi dobbiamo aggiungere "title"
per evitare errori.
Come risolvere "problemi di spazio" e dipendenze locali:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
Un sacco di risposte per questa domanda già, ma sto pubblicando questo per chiarire qualcosa di importante, anche se questo potrebbe non essere sempre il caso:
Start "C:\Program Files\someprog.exe"
Potrebbe causare problemi in alcune versioni di Windows poiché in Start
realtà si aspetta che il primo set di virgolette sia un titolo di Windows. Quindi è consigliabile prima citare due volte un commento o un commento vuoto:
Start "" "C:\Program Files\someprog.exe"
o
Start "Window Title" "C:\Program Files\someprog.exe"
La mia soluzione per farlo dalla GUI:
Creare un collegamento al programma che si desidera eseguire;
Modifica le proprietà del collegamento;
Cambia il TARGET
campo in %COMSPEC% /C "START "" "PROGRAMNAME""
;
Cambia il RUN
campo in minimizzato.
Pronto! Guarda come ti piace ...
PS: i parametri del programma possono essere inseriti tra le due virgolette finali; la PROGRAMNAME
stringa può essere un nome file, un percorso relativo o assoluto: se si inserisce un percorso assoluto e si cancella la lettera di unità e il punto e virgola, questo funzionerà in una chiavetta indipendentemente dalla lettera assegnata dal computer host. (inoltre, se si inserisce il collegamento nella stessa cartella e si precede il nome del file del programma PROGRAMNAME
con la %CD%
variabile, i percorsi corrisponderanno sempre; lo stesso trucco può essere utilizzato nel START IN
campo).
Se questo file batch è qualcosa che si desidera eseguire come pianificato o sempre; è possibile utilizzare lo strumento di pianificazione di Windows e non si apre in una finestra all'avvio del file batch.
Per aprire Task Scheduler
:
'cmd'
taskschd.msc
-> invioDal lato destro, fai clic Create Basic Task
e segui i menu.
Spero che questo ti aiuti.
Ecco la mia soluzione preferita. È tratto da una risposta a una domanda simile.
Utilizzare uno script VBS per chiamare il file batch:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
Copia le righe sopra in un editor e salva il file con estensione .VBS.