Bagaimana saya bisa menjalankan baris perintah Windows di latar belakang?

160

Bagaimana saya bisa menjalankan baris perintah windows di latar belakang, tanpa itu berinteraksi dengan pengguna aktif?

Mohammad AL-Rawabdeh
sumber
1
Bisakah Anda menentukan apa yang ingin Anda lakukan? Apakah Anda ingin melakukan perintah pada baris perintah di latar belakang atau apakah Anda ingin melakukan seluruh baris perintah di latar belakang, sehingga tidak terlihat dari desktop?
omnibrain
saya butuh dua tongkat melakukan perintah pada baris perintah di latar belakang atau apakah Anda ingin melakukan seluruh baris perintah di latar belakang
Mohammad AL-Rawabdeh
Gandakan pertanyaan ini di ServerFault .
Dan Dascalescu

Jawaban:

37

Pertanyaan Anda cukup kabur, tetapi ada posting di ServerFault yang mungkin berisi informasi yang Anda butuhkan. Jawaban di sana menjelaskan cara menjalankan jendela file batch yang tersembunyi:

Anda bisa menjalankannya diam-diam menggunakan file Windows Script sebagai gantinya. Metode Jalankan memungkinkan Anda menjalankan skrip dalam mode tidak terlihat. Buat .vbs file seperti ini

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

dan jadwalkan. Argumen kedua dalam contoh ini menetapkan gaya jendela. 0 berarti "sembunyikan jendela."

nhinkle
sumber
Ini sempurna. SetPoint untuk Logitech tidak pernah, PERNAH, dimulai dengan windows. Saya sudah memulainya secara manual selama sekitar 3 tahun sekarang. Apakah penting di mana bets berada? Saya telah melihat beberapa orang menaruh jenis file batch ini di C, atau root.
ejbytes
244

Ini agak terlambat, tetapi saya hanya menemukan pertanyaan ini sambil mencari jawabannya sendiri dan saya menemukan ini:

START /B program

yang, pada Windows, adalah yang paling dekat dengan perintah Linux:

program &

Dari sistem BANTUAN konsol:

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.

Satu masalah yang saya lihat dengan itu adalah bahwa Anda memiliki lebih dari satu program menulis ke jendela konsol, itu menjadi sedikit membingungkan dan campur aduk.

Untuk membuatnya tidak berinteraksi dengan pengguna, Anda dapat mengarahkan output ke file:

START /B program > somefile.txt
Novicaine
sumber
3
Saya paling suka jawaban ini karena tidak membuka jendela perintah lain
wisbucky
3
Ini sepertinya tidak berfungsi untuk saya, sepertinya hanya membuat contoh cmd baru [?] Namun jika saya menjalankannya seperti start /B "" programitu berfungsi ...
rogerdpack
1
@rogerdpack Benar. Untuk beberapa alasan dengan Windows 7, ini adalah format perintah. "" Adalah parameter judul wajib.
ejbytes
10
Sayangnya, jika saya keluar dari jendela shell di mana saya menelurkan proses, sepertinya proses juga berakhir.
palswim
2
@Qwerty: Lihatlah MSDN untuk SetConsoleCtrlHandler
Zan Lynx
68

Saya menduga maksud Anda: Jalankan sesuatu di latar belakang dan segera dapatkan baris perintah dengan melanjutkan program yang diluncurkan.

START "" program

Yang setara dengan Unix

program &
Paul Douglas
sumber
7
apa persamaan fg? Bisakah kita menutup command prompt dan porgram akan tetap berjalan?
Nenotlep
1
Juga, saya ingin menjalankan program di command prompt dan kembali ke sana dari waktu ke waktu, seperti di layar - apakah itu bisa dilakukan dengan ini? Saya harus bisa menutup command prompt tetapi tetap menjalankan program yang dapat digunakan.
Nenotlep
4
Apa parameter kosong itu start? Itu tidak bekerja tanpa itu (hanya menjalankan contoh perintah baru), tetapi startbantuan tidak mengatakan apa-apa tentang hal itu, ia menyatakan semua parameter bersifat opsional (atau saya tidak memahaminya).
Dawid Ferenczy Rogožan
@DawidFerenczy startbekerja tanpa parameter kosong untuk saya, tapi saya sepertinya mendapatkan shell dengan konfigurasi terpisah ketika saya menggunakan parameter kosong, sebagai pengaturan yang saya lakukan ketika saya tidak memiliki parameter kosong tidak digunakan ketika saya menggunakan parameter kosong. Saya heran mengapa mereka menggunakan konfigurasi terpisah?
HelloGoodbye
@ Paul START "" programmemulai perintah di terminal baru untuk saya, sedangkan program &di Unix menjalankan perintah dan mencetak output ke terminal yang sama.
HelloGoodbye
15
START /MIN program 

yang di atas cukup dekat dengan rekan Unix-nya program &

Siva Sankaran
sumber
6

Anda dapat menggunakan skrip PowerShell ini (berkomentar!):

# 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

Simpan sebagai .ps1file. Setelah mengaktifkan eksekusi skrip (lihat Mengaktifkan Skrip di wiki tag PowerShell ), Anda dapat meneruskannya satu atau dua string: nama yang dapat dieksekusi dan opsional baris argumen. Sebagai contoh:

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

Saya mengkonfirmasi bahwa ini berfungsi pada Windows 10.

Ben N
sumber
4
yep mulai / b tidak lagi berfungsi.
Sajuuk
3

Inilah bagaimana latar belakang server internal PHP saya. Jadi secara teknis itu harus bekerja untuk semua.

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

Terima kasih

Suyash Jain
sumber
1

Jika Anda ingin program baris perintah dijalankan tanpa diketahui pengguna, tentukan itu sebagai Layanan Windows dan akan berjalan sesuai jadwal.

CarlF
sumber
4
bagaimana kamu melakukannya?
barlop
Atau Anda dapat menjadikannya tugas terjadwal - Control Panel-> Administrative Tools-> Tugas Terjadwal atau gunakan schtasksperintah di Windows XP dan di atasnya (peringatan: schtasksrumit).
LawrenceC
0

Jawaban terkait, dengan 2 contoh:

  1. Di bawah ini membuka calc.exe:

sebut MULAI / B "kalku" "kalk.exe"

  1. Terkadang latar depan tidak diinginkan, maka Anda menjalankan diminimalkan seperti di bawah ini:

panggil MULAI / MIN "my mongod" "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"

Manohar Reddy Poreddy
sumber
Ini tampaknya tidak menjalankannya diminimalkan:call Start /MIN "c" "calc.exe"
moondra
1
benar, ini berfungsi untuk notepad: panggil start / min "n" "notepad.exe"
Manohar Reddy Poreddy
Jadi itu berfungsi untuk aplikasi berjendela tetapi tidak untuk aplikasi konsol. Angka, sebagai salah satu dapat lulus SW_*untuk CreateProcessWmelalui STARTUPINFO::wShowWindow(termasuk SW_HIDE).
0xC0000022L
Apa itu perintah penuh, dengan di atas seperti "mulai" atau alat lain? apakah kita perlu menulis program lain?
Manohar Reddy Poreddy
-2

baru saja menemukan thread ini windows 7, menggunakan power shell, menjalankan executable di latar belakang, persis sama dengan nama file unix &

contoh: mulai nama file -NoNewWindow

membantu memulai

NAME Mulai-Proses

SYNTAX Mulai-Proses [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardError] [-RedirectStandard] Arahan [-WindowStyle {Normal | Tersembunyi | Diminimalkan | Dimaksimalkan}] [-GunakanNewEnvironment] []

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

ALIASES dimulai

jerry
sumber