2010-10-12 06:09:11 +0000 2010-10-12 06:09:11 +0000
174
174

Hoe kan ik een Windows opdrachtregel in de achtergrond uitvoeren?

Hoe kan ik een Windows opdrachtregel in de achtergrond uitvoeren, zonder dat deze interactie heeft met de actieve gebruiker?

Antwoorden (10)

257
257
257
2013-05-03 14:28:39 +0000

Dit is een beetje laat, maar ik kwam net deze vraag tegen toen ik zelf op zoek was naar het antwoord en ik vond dit:

START /B program

die, op Windows, het dichtst bij het Linux commando ligt:

program &

Vanaf het console HELP systeem:

C:\>HELP START

Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title" Title to display in window title bar.
    path Starting directory.
    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.

Een probleem dat ik zag is dat je meer dan één programma hebt dat naar het console-venster schrijft, het wordt een beetje verwarrend en rommelig.

Om het niet te laten interageren met de gebruiker, kun je de uitvoer omleiden naar een bestand:

START /B program > somefile.txt
70
70
70
2011-09-30 11:44:07 +0000

Ik vermoed dat je bedoelt: Draai iets op de achtergrond en krijg de commandoregel onmiddellijk terug terwijl het gelanceerde programma doorgaat.

START "" program

die het Unix equivalent is van

program &
40
40
40
2010-10-12 06:30:43 +0000

Uw vraag is vrij vaag, maar er is een post op ServerFault die de informatie kan bevatten die u nodig hebt. Het antwoord daar beschrijft hoe u een verborgen batch-bestandsvenster kunt uitvoeren:

U zou het in plaats daarvan geruisloos kunnen uitvoeren met behulp van een Windows Script-bestand. Met de Run-methode kunt u een script in onzichtbare modus uitvoeren. Maak een .vbs bestand als dit

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

en plan het in. Het tweede argument in dit voorbeeld stelt de vensterstijl in. 0 betekent “verberg het venster”.

15
15
15
2012-09-13 06:55:32 +0000
START /MIN program

de bovenstaande is vrij dichterbij met zijn Unix tegenhanger program &

7
7
7
2016-09-01 22:20:49 +0000

U kunt dit (commentaar!) PowerShell-script gebruiken:

# Create the .NET objects
$psi = New-Object System.Diagnostics.ProcessStartInfo
$newproc = New-Object System.Diagnostics.Process
# Basic stuff, process name and arguments
$psi.FileName = $args[0]
$psi.Arguments = $args[1]
# Hide any window it might try to create
$psi.CreateNoWindow = $true
$psi.WindowStyle = 'Hidden'
# Set up and start the process
$newproc.StartInfo = $psi
$newproc.Start()
# Return the process object to the caller
$newproc

Sla het op als een .ps1-bestand. Na het inschakelen van de scriptuitvoering (zie Scripts inschakelen in de PowerShell-tag wiki ), kunt u het een of twee strings doorgeven: de naam van het uitvoerbare bestand en optioneel de argumentieregel. Bijvoorbeeld:

.\hideproc.ps1 'sc' 'stop SomeService'

Ik bevestig dat dit werkt op Windows 10.

3
3
3
2018-07-09 04:30:36 +0000

Dit is hoe mijn PHP interne server naar de achtergrond gaat. Dus technisch gezien zou het voor iedereen moeten werken.

start /B "" php -S 0.0.0.0:8000 &

Bedankt.

2
2
2
2017-08-09 05:08:06 +0000

Een verwant antwoord, met 2 voorbeelden:

  1. Hieronder opent calc.exe:

noem START /B “mijn calc” “calc.exe”

  1. Soms is de voorgrond niet gewenst, dan wordt de voorgrond geminimaliseerd zoals hieronder:

bel start /min “n” “notepad.exe”

bel START /MIN “my mongod” “%ProgramFiles%MongoDB\Server”

Hoop dat het helpt.

1
1
1
2011-09-30 14:00:42 +0000

Als u wilt dat het commandoregelprogramma wordt uitgevoerd zonder dat de gebruiker het weet, definieer het dan als een Windows-service en het wordt uitgevoerd volgens een schema.

-1
-1
-1
2015-09-03 14:10:25 +0000

U kunt de juiste manier zien om dit te doen in deze link: Hoe een geplande taak uit te voeren zonder een opdrachtvenster Verschijnt

Samenvattend, moet u het selectievakje ‘Uitvoeren of de gebruiker is ingelogd of niet’ aanvinken. De gebruikersgegevens van de taak moeten worden ingevoerd nadat u op ‘Ok’ hebt gedrukt.

-2
-2
-2
2015-07-13 23:29:17 +0000

kwam net deze thread windows 7 tegen, gebruik makend van power shell, draait executables op de achtergrond, exact hetzelfde als unix bestandsnaam &

voorbeeld: start -NoNewWindow bestandsnaam

help start

NAME Start-Process

SYNTAX Start-Process [-ArgumentList] ]. [-Credential] [-WerkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardInput]. RedirectStandardOutput] [-Wacht] [-WindowStyle | Hidden | Minimized | Maximized}] [-UseNewEnvironment] []

Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]

ALIASES saps start