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
.vbsfile seperti iniDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothingdan 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 "" programitu 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 startbantuan tidak mengatakan apa-apa tentang hal itu, ia menyatakan semua parameter bersifat opsional (atau saya tidak memahaminya).
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?
START "" programmemulai 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 .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.
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.
schtasksperintah di Windows XP dan di atasnya (peringatan: schtasksrumit).
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 CreateProcessWmelalui 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