Cum pot rula un program dintr-un lot de fișiere, fără a părăsi consola deschise după programul începe?

Pentru moment fișier batch arata astfel:

myprogram.exe param1

Programul începe, dar Fereastra DOS rămâne deschisă. Cum pot închide?

Comentarii la întrebare (1)

Utilizați comanda de pornire pentru a preveni fișier batch de așteptare pentru acest program. Doar amintiți-vă pentru a pune un gol citat dublu în fața programul pe care doriți să ruleze după "Start". De exemplu, dacă doriți pentru a rula Visual Studio 2012 dintr-un lot de comandă:

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

observa dublu citat după start.

Comentarii (5)
Soluția

Puteți folosi ieșirea de cuvinte cheie. Aici este un exemplu de pe un lot de fișiere:

start myProgram.exe param1
exit
Comentarii (4)

Uita-te la comanda START, puteți face acest lucru:

START rest-of-your-program-name

De exemplu, acest lot de fișiere va aștepta până notepad ieșiri:

@echo off
notepad c:\test.txt

Cu toate acestea, asta nu't:

@echo off
start notepad c:\test.txt
Comentarii (0)

Din întrebare:

start /b myProgram.exe params...

funcționează dacă începe programul de la o existente DOS session.

Dacă nu, sună o vb script

wscript.exe invis.vbs myProgram.exe %*

De Windows Script Host Run() metoda are:

  • intWindowStyle : 0 înseamnă "invizibil windows"
  • bWaitOnReturn : fals înseamnă că primul scenariu nu este nevoie să așteptați pentru a doua script-ul pentru a termina

Aici este invizi.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat "
    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
Comentarii (2)

Acesta este singurul lucru care a lucrat pentru mine, atunci când am încercat pentru a rula o clasă java dintr-un lot de fișiere:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm`

Poți personaliza butonul "start" de comandă, după cum doriți pentru proiectul dumneavoastră, urmând corespunzătoare sintaxa:

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)
Comentarii (0)

Ar trebui să încercați acest lucru. Începe programul cu nici o fereastră. De fapt clipește pentru o secundă, dar dispare destul de repede.

start "name" /B myprogram.exe param1
Comentarii (2)

Cum de a rezolva "problemă de spațiu" și locale dependențe:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit
Comentarii (4)

Soluția mea pentru a face acest lucru de la GUI:

  1. Creați o comandă rapidă pentru programul pe care doriți pentru a rula;

  2. Edita comenzi rapide's proprietăți;

  3. Schimba "ȚINTĂ", domeniul a %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Schimba " RUN " câmp pentru a minimizat.

Gata! Vezi cum e...

PS: Program parametri pot fi inserate între cele două finale ghilimele; de PROGRAMNAME string poate fi un nume, o rudă sau o cale absolută-dacă ați pus într-o cale absolută și șterge literă de unitate și virgulă, atunci acest lucru va funcționa într-un stick de memorie, indiferent de ceea ce scrisoare computerul gazdă atribuie... (de asemenea, dacă vă plasați comenzi rapide în același folder și preced program filename în PROGRAMNAME " cu " %CD% variabil, drumurile se potrivesc întotdeauna; același truc poate fi folosit și în AVANS ÎN domeniu).

Comentarii (0)

Dacă acest fișier batch este ceva ce ai vrea să fugi cât mai regulate sau întotdeauna; aveți posibilitatea să utilizați windows programul de instrument și nu't se deschide într-o fereastră atunci când începe fișier batch.

Pentru a deschide Task Scheduler`:

  • Start -> Run/Search -> 'cmd'
  • Tip taskschd.msc -> introduceți

Din partea dreaptă, faceți clic pe pentru a Crea o Sarcină de Bază și urmați meniurile.

Sper că acest lucru vă ajută.

Comentarii (0)

Aici este meu preferat soluție. Este luat de la un răspunde la o întrebare similară.

Utilizați o VBS Script pentru a apela fișierul de comenzi:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

Copia liniile de mai sus la un editor și salvați fișierul cu .Extensia VBS.

Comentarii (0)

Am avut această problemă și următoarele lucrat pentru mine:

run myprogram.exe param1
Comentarii (1)