ドラッグ&ドロップで引数を渡してプログラムを実行するバッチファイル
実行したいプログラムのあるフォルダーに以下の様なバッチファイルを作成し、そのショートカットをデスクトップに作成。
1 2 3 4
| cd /d %~dp0 実行したいプログラム %* cd pause
|
引数に渡すファイルをショートカットにドロップすることで、対象のプログラムに引数を渡して実行できる。
バッチパラメーター
バッチファイルのパラメーター処理は call /?
で確認することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| C:\Users\<user>>call /? バッチ プログラムを別のバッチ プログラムから呼び出します。
CALL [ドライブ:][パス]ファイル名 [バッチパラメーター]
バッチパラメーター バッチ プログラムで必要なコマンド ライン情報を指定します。
コマンド拡張機能を有効にすると、CALL は次のように変更されます:
CALL コマンドは、CALL のターゲットとしてラベルを受け付けるようになります。 構文は、次のとおりです:
CALL :ラベル 引数
指定された引数で新しいバッチ ファイル コンテキストが作成され、指定 されたラベルの次の文に制御が渡されます。バッチ スクリプト ファイルの 最後に 2 回到達することによって、2 回 "終了" する必要があります。 1 回目に最後に到達したときには、制御は CALL 文の次の行に返されます。 2 回目に、バッチ スクリプトが終了します。バッチ スクリプトから "戻る" ための GOTO :EOF 拡張機能の説明については、GOTO /? と入力してください。
また、バッチ スクリプトの引数参照 (%0、%1 など) の展開は、次のように 変更されました:
%* バッチ スクリプト内では、すべての引数 (%1、%2、%3、%4、 %5 など) を参照します。
バッチ パラメーター (%n) の置換は拡張されました。次のオプション構文 を使うことができます:
%~1 - すべての引用句 (") を削除して、%1 を展開します。 %~f1 - %1 を完全修飾パス名に展開します。 %~d1 - %1 をドライブ文字だけに展開します。 %~p1 - %1 をパスだけに展開します。 %~n1 - %1 をファイル名だけに展開します。 %~x1 - %1 をファイル拡張子だけに展開します。 %~s1 - 展開されたパスは、短い名前だけを含みます。 %~a1 - %1 をファイル属性に展開します。 %~t1 - %1 をファイルの日付/時刻に展開します。 %~z1 - %1 をファイルのサイズに展開します。 %~$PATH:1 - PATH 環境変数に指定されているディレクトリを検索し、 最初に見つかった完全修飾名に %1 を展開します。 環境変数名が定義されていない場合、または 検索してもファイルが見つからなかった場合は、 この修飾子を指定すると空の文字列に展開されます。
修飾子を組み合わせて、複合結果を得ることもできます:
%~dp1 - %1 をドライブ文字とパスだけに展開します。 %~nx1 - %1 をファイル名と拡張子だけに展開します。 %~dp$PATH:1 - PATH 環境変数に指定されているディレクトリを 検索して %1 を探し、最初に見つかったファイル のドライブ文字とパスだけに展開します。 %~ftza1 - %1 を DIR の出力行のように展開します。
上の例の %1 と PATH は、他の有効な値で置き換えることができ ます。%~ 構文は有効な引数の数によって区切られます。%~ 修飾子 は %* と同時には使用できません。
|
バッチファイルの挙動
ドラッグ元とドロップ先のパスを展開する
%0
にはドロップされるバッチファイルのフルパス、%1
にはドロップするファイルのフルパスが入る。
%~dp0
にはバッチファイルの存在するフォルダーのフルパス、%~dp1
はドロップするファイルのフルパスが入る。
1 2 3 4 5
| echo %0 echo %~dp0 echo %1 echo %~dp1 pause
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| C:\Users\<USER>\Desktop>echo "C:\Users\<USER>\Desktop\test.bat" "C:\Users\<USER>\Desktop\test.bat"
C:\Users\<USER>\Desktop>echo C:\Users\<USER>\Desktop\ C:\Users\<USER>\Desktop\
C:\Users\<USER>\Desktop>echo C:\Users\<USER>\Desktop\test.txt C:\Users\<USER>\Desktop\test.txt
C:\Users\<USER>\Desktop>echo C:\Users\<USER>\Desktop\ C:\Users\<USER>\Desktop\
C:\Users\<USER>\Desktop>pause 続行するには何かキーを押してください . . .
|
ドロップ先のパスに移動してから実行する
%~dp0
でドロップ先のフォルダーに移動する。
%*
は %1
以降のパラメーターを示している。
1 2 3 4
| cd /d %~dp0 echo %* cd pause
|
1 2 3 4 5 6 7 8 9 10
| C:\Users\<USER>\Desktop>cd /d C:\Users\<USER>\Desktop\
C:\Users\<USER>\Desktop>echo C:\Users\<USER>\Desktop\test.txt C:\Users\<USER>\Desktop\test.txt
C:\Users\<USER>\Desktop>cd C:\Users\<USER>\Desktop
C:\Users\<USER>\Desktop>pause 続行するには何かキーを押してください . . .
|
バッチファイルのショートカットにドロップした場合
バッチファイルがC:\work
にあり、デスクトップ上に作成したショートカットへドロップした場合。
%0
はバッチファイルの場所を指す。
1 2 3 4 5 6 7 8 9 10
| C:\work>cd /d C:\work\
C:\work>echo C:\Users\<USER>\Desktop\test.txt C:\Users\<USER>\Desktop\test.txt
C:\work>cd C:\work
C:\work>pause 続行するには何かキーを押してください . . .
|