1. ホーム
  2. path

[解決済み] CMDでファイルパスからフォルダパスを取得する方法

2022-04-25 22:38:31

質問

cmdファイルを含むフォルダのパスが必要です。 以下のような場合 %0 私はファイル名を得ることができます。しかし、どのようにフォルダ名を取得するのですか?

c:\temp\test.cmd >> test.cmd

P.S. 私のカレントディレクトリ != スクリプトのフォルダ。

解決方法は?

フォルダ名とドライブには

echo %~dp0

修飾語を使い分けると、より多くの情報を得ることができます。

%~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

The modifiers can be combined to get compound results:
%~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

これは、プロンプト上の "for /?" コマンドからのコピーペーストです。お役に立てれば幸いです。

関連

DOS BatchのTop 10 (そう、DOS Batchです...) ショー バッチパラムズ.bat (ソースはgistにリンク)。

C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1     =      c:\windows\notepad.exe
%~f1     =      c:\WINDOWS\NOTEPAD.EXE
%~d1     =      c:
%~p1     =      \WINDOWS\
%~n1     =      NOTEPAD
%~x1     =      .EXE
%~s1     =      c:\WINDOWS\NOTEPAD.EXE
%~a1     =      --a------
%~t1     =      08/25/2005 01:50 AM
%~z1     =      17920
%~$PATHATH:1     =
%~dp1     =      c:\WINDOWS\
%~nx1     =      NOTEPAD.EXE
%~dp$PATH:1     =      c:\WINDOWS\
%~ftza1     =      --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE