アクティブなユーザーと対話せずに、バックグラウンドでWindowsコマンドラインを実行するにはどうすればよいですか?
アクティブなユーザーと対話せずに、バックグラウンドでWindowsコマンドラインを実行するにはどうすればよいですか?
回答:
あなたの質問はかなりあいまいですが、必要な情報が含まれている可能性のあるServerFaultの投稿があります。答えは、非表示のバッチファイルウィンドウを実行する方法について説明しています。
代わりに、Windowsスクリプトファイルを使用してサイレントモードで実行できます。Runメソッドを使用すると、スクリプトを非表示モードで実行できます。
.vbs
このようなファイルを作成しますDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothing
それをスケジュールします。この例の2番目の引数は、ウィンドウスタイルを設定します。0は「ウィンドウを隠す」ことを意味します。
これは少し遅れていますが、自分で答えを探しているときにこの質問に出くわしましたが、これを見つけました:
START /B program
Windowsでは、Linuxコマンドに最も近い:
program &
コンソールヘルプシステムから:
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.
私が見た問題の1つは、コンソールウィンドウに複数のプログラムが書き込みを行っていることです。少し混乱して混乱します。
ユーザーと対話しないようにするには、出力をファイルにリダイレクトできます。
START /B program > somefile.txt
start /B "" program
、それは機能しました
つまり、バックグラウンドで何かを実行し、起動されたプログラムを続行してすぐにコマンドラインを取得します。
START "" program
これは、Unixと同等です
program &
start
何ですか?それなしでは機能しません(新しいコマンドインスタンスのみを実行します)が、start
ヘルプはそれについて何も言わず、すべてのパラメーターが最適であると述べています(またはわかりません)。
start
は空のパラメーターなしで機能しますが、空のパラメーターを使用していないときに行った設定は使用するときに使用されないため、空のパラメーターを使用すると別の構成のシェルを取得するようです空のパラメーター。なぜ別々の構成を使用するのだろうか?
START "" program
は新しいターミナルでコマンドを開始しますが、program &
Unixではコマンドを実行し、同じターミナルに出力を出力します。
この(コメント付き!)PowerShellスクリプトを使用できます。
# 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
.ps1
ファイルとして保存します。スクリプトの実行を有効にした後(PowerShellタグwikiのスクリプトの有効化を参照)、1つまたは2つの文字列を渡すことができます:実行可能ファイルの名前とオプションの引数行。例えば:
.\hideproc.ps1 'sc' 'stop SomeService'
これがWindows 10で機能することを確認します。
関連する回答、2つの例:
START / B "my calc" "calc.exe"を呼び出します
コールSTART / MIN "my mongod" "%ProgramFiles%\ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"
call Start /MIN "c" "calc.exe"
SW_*
toをCreateProcessW
viaに渡すことができるためSTARTUPINFO::wShowWindow
(Figure を含むSW_HIDE
)。
このリンクでこれを行う正しい方法を見ることができます:
コマンドウィンドウが表示されずにスケジュールされたタスクを実行する方法
要約すると、「ユーザーがログオンしているかどうかに関係なく実行する」のチェックボックスが必要です。「OK」を押した後、タスクのユーザー資格情報を入力する必要があります。
このスレッドウィンドウ7に出会ったばかりで、パワーシェルを使用して、バックグラウンドで実行可能ファイルを実行します。UNIXファイル名とまったく同じです&
例:start -NoNewWindow filename
始めるのを助ける
NAME開始プロセス
構文Start-Process [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardOutput] [-Wait] [-WindowStyle {Normal | 非表示| 最小化| 最大化}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
エイリアスsaps開始