バックグラウンドでWindowsコマンドラインを実行するにはどうすればよいですか?


160

アクティブなユーザーと対話せずに、バックグラウンドでWindowsコマンドラインを実行するにはどうすればよいですか?


1
やりたいことを指定できますか?バックグラウンドでコマンドラインでコマンドを実行しますか、それともデスクトップから見えないようにコマンドライン全体をバックグラウンドで実行しますか?
オムニブレイン

バックグラウンドでコマンドラインでコマンドを実行する2つの杖が必要ですか、またはバックグラウンドでコマンドライン全体を実行しますか
モハンマドAL-Rawabdeh

回答:


37

あなたの質問はかなりあいまいですが、必要な情報が含まれている可能性のある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は「ウィンドウを隠す」ことを意味します。


これは完璧です。SetPoint for Logitechは決してWindowsで始まることはありません。私は約3年前から手動で起動しています。バッチの場所は重要ですか?このタイプのバッチファイルをCまたはルートに配置する人を見たことがあります。
ejbytes

244

これは少し遅れていますが、自分で答えを探しているときにこの質問に出くわしましたが、これを見つけました:

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

3
それは別のコマンドウィンドウを開いていないので、私は最高のこの答えが好き
wisbucky

3
これは私には機能していないようです。新しいcmdインスタンスを作成するようです[?]しかし、それを実行した場合start /B "" program、それは機能しました
...-rogerdpack

1
@rogerdpackそうです。Windows 7では何らかの理由で、これがコマンド形式です。「」は必須のタイトルパラメータです。
ejbytes

10
残念ながら、プロセスを生成したシェルウィンドウを終了すると、プロセスも終了したように見えます。
palswim

2
@Qwerty:SetConsoleCtrlHandlerのMSDNをご覧ください
Zan Lynx

68

つまり、バックグラウンドで何かを実行し、起動されたプログラムを続行してすぐにコマンドラインを取得します。

START "" program

これは、Unixと同等です

program &

7
同等のfgとは何ですか?コマンドプロンプトを閉じても、porgramは実行できますか?
ネノトレップ14年

1
また、私はコマンドプロンプトでプログラムを実行し、画面のように時々それに戻りたい-これで実行可能ですか?コマンドプロンプトを閉じることができる必要がありますが、実行中のプログラムは使用可能なままにします。
ネノトレップ14年

4
の空のパラメータはstart何ですか?それなしでは機能しません(新しいコマンドインスタンスのみを実行します)が、startヘルプはそれについて何も言わず、すべてのパラメーターが最適であると述べています(またはわかりません)。
ダウィドフェレンツィーロゴザン

@DawidFerenczy startは空のパラメーターなしで機能しますが、空のパラメーターを使用していないときに行った設定は使用するときに使用されないため、空のパラメーターを使用すると別の構成のシェルを取得するようです空のパラメーター。なぜ別々の構成を使用するのだろうか?
HelloGoodbye

@Paul START "" programは新しいターミナルでコマンドを開始しますが、program &Unixではコマンドを実行し、同じターミナルに出力を出力します。
HelloGoodbye


6

この(コメント付き!)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で機能することを確認します。


4
うん開始/ bは動作しなくなりました。
Sajuuk

3

これが私のPHP内部サーバーがバックグラウンドになる方法です。したがって、技術的にはすべての人に有効です。

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

ありがとう


1

ユーザーが気付かないうちにコマンドラインプログラムを実行する場合は、Windowsサービスとして定義すると、スケジュールに従って実行されます。


4
どうやってやるの?
barlop

または、コントロールパネル->管理ツール->スケジュールされたタスク、またはschtasksWindows XP以降でコマンドを使用して、スケジュールされたタスクにすることができます(警告:schtasks複雑です)。
ローレンス

0

関連する回答、2つの例:

  1. 以下はcalc.exeを開きます。

START / B "my calc" "calc.exe"を呼び出します

  1. 前景が望ましくない場合は、次のように最小化して実行します。

コールSTART / MIN "my mongod" "%ProgramFiles%\ MongoDB \ Server \ 3.4 \ bin \ mongod.exe"


これは最小化されて実行されていないようですcall Start /MIN "c" "calc.exe"
。– moondra

1
正しい、メモ帳で機能する:call start / min "n" "notepad.exe"
マノハールレディポレディ18年

したがって、ウィンドウアプリケーションでは機能しますが、コンソールアプリケーションでは機能しません。SW_*toをCreateProcessWviaに渡すことができるためSTARTUPINFO::wShowWindow(Figure を含むSW_HIDE)。
0xC0000022L

上記の「開始」または他のツールのような、完全なコマンドとは何ですか?別のプログラムを書く必要がありますか?
マノハールレディポレディ18


-2

このスレッドウィンドウ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開始

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.