Etkin kullanıcıyla etkileşime girmeden arka planda bir windows komut satırını nasıl uygulayabilirim?
Etkin kullanıcıyla etkileşime girmeden arka planda bir windows komut satırını nasıl uygulayabilirim?
Yanıtlar:
Sorunuz oldukça belirsiz, ancak ihtiyacınız olan bilgileri içerebilecek ServerFault'da bir yayın var . Buradaki cevap gizli bir toplu iş dosyası penceresinin nasıl çalıştırılacağını açıklar:
Bunun yerine bir Windows Script dosyası kullanarak sessizce çalıştırabilirsiniz. Çalıştırma Yöntemi, bir komut dosyasını görünmez modda çalıştırmanıza izin verir. Bunun
.vbs
gibi bir dosya oluşturunDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothing
ve bunu programlayın. Bu örnekteki ikinci argüman pencere stilini belirler. 0, "pencereyi gizle" anlamına gelir.
Bu biraz geç ama cevabı kendim ararken sadece bu soruya rastladım ve şunu buldum:
START /B program
Windows'ta Linux komutuna en yakın olanı:
program &
Konsolun YARDIM sisteminden:
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.
Gördüğüm tek sorun, konsol penceresine yazılan birden fazla programın olması, biraz kafa karıştırıcı ve karışık bir hal alıyor.
Kullanıcı ile etkileşime girmemesi için çıktıyı bir dosyaya yönlendirebilirsiniz:
START /B program > somefile.txt
start /B "" program
Şunu kastettiğinizi düşünüyorum: Arka planda bir şey çalıştırın ve başlatılan program devam ederken komut satırını hemen geri alın.
START "" program
Unix'in eşdeğeri
program &
start
? Onsuz çalışmıyor (yalnızca yeni bir komut örneği çalıştırır), ancak start
yardımı bu konuda hiçbir şey söylemez, tüm parametrelerin optimal olduğunu belirtir (ya da anlamıyorum).
start
benim için boş parametre olmadan çalışıyor, ancak boş parametreyi kullandığımda ayrı bir konfigürasyona sahip bir mermi alıyor gibi görünüyorum. boş parametre. Neden ayrı konfigürasyonlar kullandıklarını merak ediyorum?
START "" program
benim için yeni bir terminalde bir komut başlatırken program &
, Unix de komutu çalıştırıyor ve çıktıyı aynı terminale yazdırıyor.
START /MIN program
yukarıdakiler, Unix mevkidaşı ile oldukça yakın program &
Bunu (yorumladı!) PowerShell betiğini kullanabilirsiniz:
# 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
Bir .ps1
dosya olarak kaydedin . Komut dosyası yürütülmesini etkinleştirdikten sonra (bkz . PowerShell etiketi wiki'deki Komut Dosyalarını Etkinleştirme ), bir veya iki dizeyi iletebilirsiniz: çalıştırılabilir dosyanın adı ve isteğe bağlı olarak bağımsız değişkenler satırı. Örneğin:
.\hideproc.ps1 'sc' 'stop SomeService'
Bunun Windows 10'da çalıştığını onaylıyorum.
PHP iç sunucum bu şekilde işler. Bu yüzden teknik olarak herkes için çalışması gerekir.
start /B "" php -S 0.0.0.0:8000 &
Teşekkürler
Komut satırı programının kullanıcı bile bilmeden çalışmasını istiyorsanız, bir Windows Hizmeti olarak tanımlayın ve bir zamanlamaya göre çalışacaktır.
schtasks
Windows XP ve üstündeki komutları kullanabilirsiniz (uyarı: schtasks
karmaşıktır).
2 örnek ile ilgili bir cevap:
START / B "calc" ı "calc.exe" olarak adlandır
START / MIN "benim mongod" çağrısı "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"
call Start /MIN "c" "calc.exe"
SW_*
için CreateProcessW
yoluyla STARTUPINFO::wShowWindow
(dahil SW_HIDE
).
Bunu yapmanın doğru yolunu bu linkte görebilirsiniz:
Görünen Bir Komut Penceresi Olmadan Zamanlanmış Görev Nasıl Çalıştırılır
Özetle, 'Kullanıcının giriş yapıp yapmadığını çalıştır' seçeneğini işaretlemeniz gerekir. 'OK' basıldıktan sonra görev kullanıcısı kimlik bilgileri girilmelidir.
Sadece bu iş parçacığı windows 7 karşılaştı, güç kabuk kullanarak, arka planda çalıştırılabilir çalıştırır, tam olarak unix dosya adı ve
örnek: start -NoNewWindow dosya adı
başlangıç yardım
ADI Başlatma İşlemi
SYNTAX Başlatma İşlemi [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInputDedit-Standart] [-WindowStyle {Normal | Gizli | Küçültülmüş | Büyütülmüş}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ALIASES sapları başlar