Search code examples
batch-filedosfilenames

In Batch: Read only the filename from a variable with path and filename


I am currently looking for a way to take a variable in batch and only parse out the filename.

For example, I pass my batch file a -s parameter from another application which is subsequently set to my source variable. The source file variable typically contains something like: C:\Program Files\myapp\Instance.1\Data\filetomove.ext.

I assume to read from the end of the variable until the first "\" and set the result to a new variable filename but I have not been able to use the "for /f" commmand successfully.

Any help would be much appreciated!

Update: Only standard XP or Windows 2000/2003 available...(can't assume resource kits installed).


Solution

  • If its coming in as an argument to the script, i.e. %1, %2, etc, you can extract just the filename and extension into a variable like this:

    set FILENAME=%~nxN
    

    where N is the index of the argument. For example, this script will echo just the filename of the first argument:

    @echo off
    set FILENAME=%~nx1
    echo %FILENAME%