Folder path from file path with CMD

For the folder name and drive, you can use:

echo %~dp0

You can get a lot more information using different modifiers:

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

This is a copy paste from the “for /?" command on the prompt. Hope it helps.

Related

Top 10 DOS Batch tips (Yes, DOS Batch…) shows batchparams.bat (link to source as a gist):

C:Temp>batchparams.bat c:windowsnotepad.exe

%~1 = c:windowsnotepad.exe

%~f1 = c:WINDOWSNOTEPAD.EXE

%~d1 = c:

%~p1 = WINDOWS

%~n1 = NOTEPAD

%~x1 = .EXE

%~s1 = c:WINDOWSNOTEPAD.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:WINDOWSNOTEPAD.EXE