Can a Windows batch file determine its own file name?
Can a Windows batch file determine its own file name?
For example, if I run the batch file C:\Temp\myScript.bat, is there a command within myScript.bat that can determine the string "myScript.bat"?
Solution 1:
Yes.
Use the special %0
variable to get the path to the current file.
Write %~n0
to get just the filename without the extension.
Write %~n0%~x0
to get the filename and extension.
Also possible to write %~nx0
to get the filename and extension.
Solution 2:
You can get the file name, but you can also get the full path, depending what you place between the '%~' and the '0'. Take your pick from
d -- drive
p -- path
n -- file name
x -- extension
f -- full path
E.g., from inside c:\tmp\foo.bat, %~nx0
gives you "foo.bat", whilst %~dpnx0
gives "c:\tmp\foo.bat". Note the pieces are always assembled in canonical order, so if you get cute and try %~xnpd0
, you still get "c:\tmp\foo.bat"