3

Windows(XP以降)のバッチファイルは、それが配置されているディレクトリの名前を知っている必要があります。フォルダ名のみであり、パス全体ではなく、バッチファイル名自体ではありません。

したがって、C:\ temp \ abc \ script.cmdに保存されているファイルは、変数で「abc」という名前を取得する必要があります。

どうすればそれができますか?

のような通常のパラメーター拡張%~p0は、パス全体(\ temp \ abc \)のみを抽出でき、他の変数ではなく実際のパラメーター(%0、%1、%2 ...)でのみ機能するため、スタックまたは結合することはできません。 。したがって、このタスクには制限が多すぎます。このforコマンドは、「最後の」トークンや最後から2番目のトークンではなく、最初から定義された位置にあるトークンのみをアドレス指定できます。

実行と移植性を単純化するために、PowerShellではなくバッチファイル(.cmd)である必要があります。

4

1 に答える 1

9

ファイルへのフル パスがあれば\..、FOR ループに正しい修飾子を追加して使用するだけで、親フォルダー名を取得できます。

for %%A in ("%~f0\..") do set "myFolder=%%~nxA"
于 2013-02-18T12:21:14.980 に答える