Bagaimana saya bisa menjalankan baris perintah windows di latar belakang, tanpa itu berinteraksi dengan pengguna aktif?
Bagaimana saya bisa menjalankan baris perintah windows di latar belakang, tanpa itu berinteraksi dengan pengguna aktif?
Jawaban:
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 iniDim 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."
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
start /B "" program
itu berfungsi ...
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 &
start
? Itu tidak bekerja tanpa itu (hanya menjalankan contoh perintah baru), tetapi start
bantuan tidak mengatakan apa-apa tentang hal itu, ia menyatakan semua parameter bersifat opsional (atau saya tidak memahaminya).
start
bekerja 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?
START "" program
memulai perintah di terminal baru untuk saya, sedangkan program &
di Unix menjalankan perintah dan mencetak output ke terminal yang sama.
START /MIN program
yang di atas cukup dekat dengan rekan Unix-nya program &
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 .ps1
file. 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.
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
Jika Anda ingin program baris perintah dijalankan tanpa diketahui pengguna, tentukan itu sebagai Layanan Windows dan akan berjalan sesuai jadwal.
schtasks
perintah di Windows XP dan di atasnya (peringatan: schtasks
rumit).
Jawaban terkait, dengan 2 contoh:
sebut MULAI / B "kalku" "kalk.exe"
panggil MULAI / MIN "my mongod" "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"
call Start /MIN "c" "calc.exe"
SW_*
untuk CreateProcessW
melalui STARTUPINFO::wShowWindow
(termasuk SW_HIDE
).
Anda dapat melihat cara yang benar untuk melakukan ini di tautan ini:
Cara Menjalankan Tugas Terjadwal Tanpa Muncul Jendela Perintah
Meringkas, Anda harus mencentang kotak untuk 'Jalankan apakah pengguna masuk atau tidak'. Kredensial pengguna tugas harus dimasukkan setelah menekan 'Oke'.
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