Get bare file names recursively in command prompt

I ran into a little snag trying to get only the filenames (no extensions or file paths) recursively.This worked for me in the root folder:

dir /b

But when i added /s to scan recursively i also got file paths before filenames which i do not want. Is there a way to get bare filenames from all subfolders in a directory?

Im on Windows 7 x64 I'd rather use regular command prompt not PS or VBS


Use the following command:

dir /b /a /s
  • /b strips the date and other details from the output
  • /a only outputs the filename, no paths
  • /s enables a recursive directory listing

If you need to save the output to a file, you can use:

dir /b /a /s >> list_of_names.txt

EDIT Actually the above solution doesn't reach the original question's goals. One thing I did notice from the question is that the post asks for recursive listing. which the other answer lacks so I think adding "/s" in the other answerer's answer will do the trick

for /f %a in ('dir /b /s') do @echo %~na

Try this:

for /f "delims=" %a in ('dir /b /s') do @echo %~na

More information on how for works and what it's doing, type for /?


for /r %i in (*) do @echo %~ni

or

forfiles /s /c "cmd /c if @isdir==FALSE noquotes.bat @fname"

assuming a file noquotes.bat in your %PATH% with this content

@echo %~1

for /r approach explained

for /r walks the current directory recursively (you can specify a directory for /r drive:\path\, the current directory is assumed) and executes the command specified by do for each file matched in the set (*). The set (.) would match only directories. @echo %~ni This command works as-is from the prompt. Double up on your quotes if you put it inside a batch file. i.e. for /r %%i in (*) do @echo %%~ni

forfiles approach explained

/s enumerates the current and all subdirectories
/c executes the command inside the quotes
@isdir and @fname is a symbol emitted into the command string
The extra batch file noquotes.bat helps by stripping the double-quotes with %~1 (parameter 1)
forfiles also allows you to specify a path to start at forfiles /P C:\Windows ...