Windows – How to get the name of a windows .bat script from within the script itself

batch-filenantvbscriptwindows

I have a .bat file. I want to programmatically get the name of the .bat file. How can I do this?

This is my end goal

"..\lib\nant\nant.exe" -buildfile:nant.build {{pass in name of this file here}}
pause

Best Answer

Try for /? on the command line. The help shows all kinds of useful filename substitutions, such as:

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

Replace I with 0 to get just the batch file name, and replace I with 1, 2, 3, etc. to get argument names.