1. ホーム
  2. batch-file

[解決済み] %~dp0とはどういう意味ですか、またどのように機能しますか?

2022-01-29 16:15:33

質問事項

私は、以下のことを発見しました。 %~dp0 は非常に便利で、バッチファイルをよりポータブルにするためによく使っています。

でも、このラベル自体、私にはとても不可解に思えるのですが...。とは何ですか? ~ は何をしているのでしょうか?また dp は、ドライブとパスの意味ですか?は、ドライブとパスを意味するのでしょうか? 0 を参照してください。 %0 , ファイル名を含むバッチファイルのパス?

それとも、ただの変なラベル?

また、ドキュメント化された機能なのか、非推奨になりやすいものなのかも知りたいです。

解決方法は?

呼び出し

for /?

は、コマンドラインでこの構文に関するヘルプを表示します(FOR の外部でも使用可能です。)

<ブロッククオート

また、FOR 変数参照が強化されました。 以下のオプションが使用できるようになりました。 の構文があります。

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string

修飾子を組み合わせることで 複合的な結果を得ることができます。

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
               environment variable for %I and expands to the
               drive letter and path of the first one found.
%~ftzaI     - expands %I to a DIR like output line

上記の例では、%I と PATH が使用できます。 は他の有効な値で置き換えることができます。 構文 %~ は、有効な FOR変数名 大文字を選ぶと I のような変数名を使用すると、より効果的です。 との混同を避けることができます。 修飾子は大文字と小文字の区別がありません。 を使用します。

のように使用できる文字があります。 f はフルパス名"です。 d はドライブレター。 p はパスで、これらは組み合わせることができます。 %~ は、それらの配列のそれぞれの始まりで、数字 I のパラメータで動作することを示します。 %I (ここで %0 は、あなたが想定しているように、バッチファイルの完全な名前です)。