
Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.
Spørsmålet
SuperUser leser Jake ønsker å kjøre en BAT-fil usynlig, skriver han:
I have installed a ruby gem called Redcar, which is launched from the command line. When it runs, it steals the shell until it terminates, so I have to create a new shell window to continue doing command line work. The shell I’m using is the GITBash shell from MySysGit.
I found a Redcar.bat file which is meant to launch Redcar as a shortcut, I presume, but I don’t want the extra command prompt window to open whenever I launch the BAT file.
How do I just run the BAT without seeing the prompt?
Er det en løsning for Jake's smarte raskt ønske?
Svarene
SuperUser-bidragsyter Afrazier reagerer med en kombinasjon av dårlige og gode nyheter:
You can’t - executing a batch file with the built in Command Prompt is going to keep a window open until the batch file exits.
What you can do is take steps to make sure that the batch file exits as quickly as possible. If at all possible, modify the batch file to run whatever program with the
start
kommando. Som standard,
start
returnerer umiddelbart uten å vente på at programmet skal gå ut, så batchfilen vil fortsette å løpe, og antagelig gå ut av umiddelbart. Par som med å endre snarveien din for å kjøre batchfilen minimeres, og du vil bare se oppgavelinjen uten å se et vindu på skjermen.
En advarsel mot dette er at hvis du kjører et konsollmodusprogram, hvor mange skriptolkere er, vil batchfilen vente på at programmet skal gå ut og bruke
start
vil gyte et nytt konsollvindu. Det du trenger å gjøre i dette tilfellet, kjøres den Windows-baserte versjonen av tolken i stedet for den konsollbaserte en - nei
start
nødvendig. For Perl ville du kjøre
wperl.exe
i stedet for
perl.exe
. For Python er det
pythonw.exe
i stedet for
python.exe
. Den gamle Win32 Ruby distribusjonen jeg har lastet ned har
rubyw.exe
, som skal gjøre det samme.
En endelig mulighet er å bruke et tredjepartsverktøy for å kjøre kommandoprompten med et skjult vindu. Jeg har hørt om slike ting, men aldri brukt dem, så jeg vet ikke noe spesielt for å peke på deg.
Lesere pekte også på en annen SuperUser-tråd som fremhever hvordan du kan bruke et Visual Basic-skript for å gå utover å minimere synligheten og rett og slett skjule CMD-spørringen. I den tråden forklarer Harry MC:
Solution 1:
Save this one line of text as file
invisible.vbs
:
CreateObject ("Wscript.Shell"). Kjør "" "" & WScript.Arguments (0) & "" "", 0, False
For å kjøre et program eller en batchfil usynlig, bruk den slik:
wscript.exe "C: Wherever invisible.vbs" "C: Some Other Place MyBatchFile.bat"
For å også kunne sende på / relé, bruker en liste over argumenter kun to dobbelte sitater
CreateObject ("Wscript.Shell"). Kjør "" og WScript.Arguments (0) & "", 0, False
for eksempel: Invisible.vbs "Kill.vbs ME.exe"
Løsning 2:
Bruk et kommandolinjeverktøy til å stille en prosess stille: Stille.
Ved å benytte noen av de ovennevnte løsningene, basert på komfortnivået ditt ved hjelp av VBS og tredjepartsverktøy eller ikke, vil det i det minste redusere synligheten til CMD-vinduet eller fjerne det umiddelbart.
Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.