cmd.exe
スクリプト—にパラメータがない場合、私は典型的な "usage:"行を持っています。ユーザにはスクリプトの使用方法を簡単に思い出させます。バッチスクリプトがコマンドライン(cmd)から開始/実行されたかどうかを確認する - または - 一時停止するか、一時停止しないか?
潜在的なユーザーがGUIまたはCLIを使用するかどうかは安全に予測できないという問題があります。 GUIを使用している人がエクスプローラウィンドウでこのスクリプトをダブルクリックすると、私はpause
ウィンドウが表示されない限り、何も読む機会がありません。彼らがCLIを使用する場合、pause
はそれらを悩ますでしょう。
私はそれを検出する方法を探しています。
@echo off
if _%1_==__ (
echo usage: %nx0: filename
rem now pause or not to pause?
)
いい解がありますか?ここで
十分な奇妙な:あなたは新しいcmd.exeのセッションを開いて、これを呼び出した場合、最初の時間それは一時停止します: 'find'は最初の試行で'%errorlevel% 'を発生しません。次の試行はうまくいきます。 –
他のコマンド(私の場合は 'set'sと' cd'の典型的な組み合わせ)がこの構造の前に*存在すれば、 '%errorlevel%'の引き上げも失敗します。 –
さらに、 'call:somesub'を使って呼び出されたサブルーチンでは動作しません。その場合、 '%cmdcmdline%'はそのサブルーチンのラベルのみを含みます: '%cmdcmdline%'。 –