A. When you call a batch file, you can enter data after the command that the batch file refers to as %1, %2, etc. For example, in the batch file hello.bat, the following command
@echo hello %1 boy
would output
hello john boy
if you called it as
hello john
The following table outlines how you can modify the passed parameter.
Parameter | Description |
%1 | The normal parameter. |
%~f1 | Expands %1 to a fully qualified pathname. If you passed only a filename from the current directory, this parameter would also expand to the drive or directory. |
%~d1 | Extracts the drive letter from %1. |
%~p1 | Extracts the path from %1. |
%~n1 | Extracts the filename from %1, without the extension. |
%~x1 | Extracts the file extension from %1. |
%~s1 | Changes the n and x options’ meanings to reference the short name. You would therefore use %~sn1 for the short filename and %~sx1 for the short extension. |
The following table shows how you can combine some of the parameters.
Parameter | Description |
%~dp1 | Expands %1 to a drive letter and path only. |
%~sp1 | For short path. |
%~nx1 | Expands %1 to a filename and extension only. |
To see all the parameters in action, put them into the batch file testing.bat, as follows.
@echo off echo fully qualified name %~f1 echo drive %~d1 echo path %~p1 echo filename %~n1 echo file extension %~x1 echo short filename %~sn1 echo short file extension %~sx1 echo drive and directory %~dp1 echo filename and extension %~nx1
Then, run the file with a long filename. For example, the batch file run on the file c:\temp\longfilename.long would produce the following output.
fully qualified name c:\TEMP\longfilename.long drive c: path \TEMP\ filename longfilename file extension .long short filename LONGFI~1 short file extension .LON drive and directory c:\TEMP\ filename and extension longfilename.long
This method also works on the second and subsequent parameters. You simply substitute the parameter for 1 (e.g., %~f2 for the second parameter’s fully qualified path name).
The %0 parameter in a batch file holds information about the file when it runs and indicates which command extensions you can use with the file (e.g., %~dp0 gives the batch file’s drive and path).