2011-07-22 12 views
8

バッチファイルの最後の行はpauseです。 if条件を追加して、スクリプトがコマンドプロンプト内で実行されるか、ダブルクリックして実行するかを確認する方法はありますか?コマンドプロンプトで実行中の場合は一時停止をスキップします。コマンドプロンプトを使用するかどうかを判断するバッチファイル

... 
... 
if not RUN_IN_COMMAND_PROMPT (
    pause 
) 

EDIT: 希望ソリューションは、Windows Server 2003/2008、WinXPの、win7の中で働く見つけます。

答えて

6
CALL :GETMYSWITCH %CMDCMDLINE% 
IF /I "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN THE EXPLORER & PAUSE 
IF /I NOT "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN A DOS SESSION 


:GETMYSWITCH 
SET MYSWITCH=%2 
0

ttyコマンドを使用してください。

-sオプションを使用して戻り値を確認します。

1

定義により、シェルスクリプトは常に「コマンドプロンプト」で実行されます。しかし、SESSIONNAMEのenv varを使ってみてください。プロンプトから手動で実行する代わりに、スクリプトをダブルクリックして起動した場合は表示されません。

+0

Win7でテストしたところ、両方の(ダブルクリック、プロンプト)%SESSIONNAME%value "Console"があります。 – Stan

+0

私のためには機能しません。 (Windows XPを使用して)バッチファイルをどのように起動するかにかかわらず、 'SESSIONNAME'には常に' Console'が含まれています –

+0

私のWin7 64bitでは、プロンプトから直接スクリプトを実行するとsessionnameが存在します。 –

1

私は、これは一年後である知っているが、あなたは

If /I "%COMSPEC%" == %CMDCMDLINE% Goto SkipPause 
pause 
:SkipPause 

を使用することができます検索する未来の人々のためにそれは一時停止ブロックをスキップします。

関連する問題