Windows komut satırını arka planda nasıl çalıştırabilirim?


160

Etkin kullanıcıyla etkileşime girmeden arka planda bir windows komut satırını nasıl uygulayabilirim?


1
Ne yapmak istediğinizi belirtebilir misiniz? Komut satırında arka planda bir komut yapmak mı istiyorsunuz yoksa tüm komut satırını arka planda yapmak mı istiyorsunuz, yani masaüstünden görünmez mi?
omnibrain

i arka planda komut satırında bir komut gerçekleştirmek iki değneğe ihtiyacı yoksa arka planda bütün komut satırı gerçekleştirmek istediğiniz do
Mohammad AL-Rawabdeh

Yanıtlar:


37

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şturun

Dim 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 harika. Logitech için SetPoint asla ASLA, pencerelerle başlamaz. Şimdi yaklaşık 3 yıldır manuel olarak başlatıyorum. Partinin nerede olduğu önemli mi? Bazı insanlar bu tür bir toplu iş dosyasını C veya kök içine koyduklarını gördüm.
ejbytes

244

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

3
Bu cevabı daha çok seviyorum çünkü başka bir komut penceresi
açmıyor

3
Bu benim için işe yaramaz gibi gözüküyor, sadece yeni bir cmd örneği [?] start /B "" program
Yaratıyor

1
@ rogerdpack Bu doğru. Bazı nedenlerden dolayı Windows 7'de bu komut formatıdır. "" Zorunlu başlık parametresidir.
ejbytes

10
Maalesef, süreci doğurduğum kabuk penceresinden çıkarsam, sürecin de sona ermesi gibi görünüyor.
palswim

2
@Qwerty: SetConsoleCtrlHandler için MSDN'e bakın
Zan Lynx

68

Ş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 &

7
fg eşdeğeri nedir? Komut istemini kapatabilir miyiz, porgram çalışmaya devam eder mi?
Nenotlep

1
Ayrıca, bir programı komut isteminde çalıştırmak ve zaman zaman tekrar ekrana gelmek istiyorum - bununla mümkün mü? Komut istemini kapatabilirim ancak çalışan programı kullanılabilir durumda tutmam gerekiyor.
Nenotlep

4
Bu boş parametre nedir start? Onsuz çalışmıyor (yalnızca yeni bir komut örneği çalıştırır), ancak startyardımı bu konuda hiçbir şey söylemez, tüm parametrelerin optimal olduğunu belirtir (ya da anlamıyorum).
Dawid Ferenczy Rogožan

@DawidFerenczy startbenim 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?
HelloGoodbye

@Paul START "" programbenim 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.
HelloGoodbye

15
START /MIN program 

yukarıdakiler, Unix mevkidaşı ile oldukça yakın program &


6

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 .ps1dosya 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.


4
yep start / b artık çalışmıyor.
Sajuuk

3

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


1

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.


4
bunu nasıl yaptın?
barlop

Alternatif olarak, zamanlanmış bir görev yapabilir - Denetim Masası-> Yönetimsel Araçlar-> Zamanlanmış Görevler veya schtasksWindows XP ve üstündeki komutları kullanabilirsiniz (uyarı: schtaskskarmaşıktır).
LawrenceC

0

2 örnek ile ilgili bir cevap:

  1. Aşağıda calc.exe açılır:

START / B "calc" ı "calc.exe" olarak adlandır

  1. Bazen ön plan istenmez, o zaman aşağıdaki gibi simge durumuna küçültülmüş olarak çalışırsınız:

START / MIN "benim mongod" çağrısı "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"


Bu onu minimize çalıştırmak için görünmüyorcall Start /MIN "c" "calc.exe"
moondra

1
doğru, bu notepad için çalışıyor: çağrı başlangıç ​​/ dakika "n" "notepad.exe"
Manohar Reddy Poreddy 12:18

Dolayısıyla, pencereli uygulamalar için çalışır, ancak konsol uygulamaları için çalışmaz. Bir geçebilir Şekiller, SW_*için CreateProcessWyoluyla STARTUPINFO::wShowWindow(dahil SW_HIDE).
0xC0000022L

Yukarıda "start" veya başka bir araç gibi olan tam komut nedir? başka bir program mı yazmamız gerekiyor?
Manohar Reddy Poreddy


-2

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.