Reputation: 1873
This is probably a very simple question, but I'm having trouble with it.
I am trying to write a Batch File and I need it to list all the files in a certain directory. The dir
command will do this, but it also gives a bunch of other information; I want it to list ONLY the file names and exclude anything else.
I just want the output to look like this:
file1.txt
file2.txt
file3.txt
Upvotes: 187
Views: 519894
Reputation: 29
For some reason Premkumar's answer did not work on windows 7. Here's a batch file variant that does (by combining ~nxi from Premkumar's answer and the command from npocmaka's answer):
@echo off
for /r %%i in (.\*.mkv) do echo %%~nxi
Upvotes: 0
Reputation: 11
dir /s/d/a:-d "folderpath\*.*" > file.txt
And, lose the /s
if you do not need files from subfolders
Upvotes: 1
Reputation: 321
In Powershell dir uses Get-ChildItem, which you can filter using Powershell commands:
dir | select { $_.Name }
Upvotes: 4
Reputation: 81
If you need the subdirectories too you need a "dir" command and a "For" command
dir /b /s DIRECTORY\*.* > list1.txt
for /f "tokens=*" %%A in (list1.txt) do echo %%~nxA >> list.txt
del list1.txt
put your root directory in dir command. It will create a list1.txt with full path names and then a list.txt with only the file names.
Upvotes: 8
Reputation: 2565
where
instead dir
?In command line:
for /f tokens^=* %i in ('where .:*')do @"%~nxi"
In bat/cmd file:
@echo off
for /f tokens^=* %%i in ('where .:*')do %%~nxi
file_0003.xlsx
file_0001.txt
file_0002.log
where .:*
G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log
For recursively:
where /r . *
G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0004.docx
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0005.csv
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0006.odt
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
@echo off
for /f tokens^=* %%i in ('where .:*')do echo/ Path: %%~dpi ^| Name: %%~nxi
Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log
In command line:
for /f tokens^=* %i in ('where /r . *')do @echo/ Path: %~dpi ^| Name: %~nxi
In bat/cmd file:
@echo off
for /f tokens^=* %%i in ('where /r . *')do echo/ Path: %%~dpi ^| Name: %%~nxi
Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log
Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0004.docx
Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0005.csv
Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0006.odt
Some further reading:
[√] Where
[√] Where sample
Upvotes: 18
Reputation: 57252
You can also try this:
for %%a in (*) do echo %%a
Using a for
loop, you can echo
out all the file names of the current directory.
To print them directly from the console:
for %a in (*) do @echo %a
Upvotes: 44
Reputation: 56155
The full command is:
dir /b /a-d
Let me break it up;
Basically the /b
is what you look for.
/a-d
will exclude the directory names.
For more information see dir /?
for other arguments that you can use with the dir
command.
Upvotes: 346
Reputation: 41
create a batch-file with the following code:
dir %1 /b /a-d > list.txt
Then drag & drop a directory on it and the files inside the directory will be listed in list.txt
Upvotes: 4
Reputation: 2151
1.Open notepad
2.Create new file
3.type bellow line
dir /b > fileslist.txt
4.Save "list.bat
"
Thats it. now you can copy & paste this "list.bat
" file any of your folder location and double click it, it will create a "fileslist.txt
" along with that directory folder and file name list.
Note: If you want create file name list along with sub folder, then you can create batch file with bellow code.
dir /b /s > fileslist.txt
Upvotes: 14
Reputation: 71
Windows 10:
open cmd
change directory where you want to create text file(movie_list.txt) for the folder (d:\videos\movies)
type following command
d:\videos\movies> dir /b /a-d > movie_list.txt
Upvotes: 3