40

In windows, is there any way to get a list of all files in a folder, including all the files within all the subfolders?

45

List all Files Recursively

C:\>dir /s

To save them to a file

C:\>dir /s /b>filelist.txt

View them a page at a time

C:\>dir /s | more

8
  • 3
    Well, okay... This will work too. Just wondering why no one uses the standard Search function of Windows for this. :-) – Wim ten Brink Aug 31 '09 at 10:03
  • 2
    @Workshop Alex: Because 1) recursive dir is just a little bit faster if it doesn't have to check any conditions; 2) it lets you save the names into a file. – user1686 Jan 26 '11 at 11:01
  • 4
    @WimtenBrink: and how are you going to send windows search to another user? – adolf garlic Jun 26 '12 at 8:53
  • 1
    You dont need to pipe to more, you just need the /p switch (does the same thing) – Keltari May 1 '13 at 18:37
  • 4
    Since the question doesn't mention directories, it should be dir /a-d /b /s. – jiggunjer Oct 7 '16 at 3:11
18

Try tree /f. This should output the entire structure.

5
  • 1
    Which will be displayed as a tree, not a list. – Joey Aug 31 '09 at 8:29
  • You don't think the OP would consider that result a list? – hyperslug Aug 31 '09 at 8:59
  • 2
    I thought the tree command would have the best formatting, allowing you to clearly see the level of the subfolders. – alex Aug 31 '09 at 9:25
  • it does have the best structure. can it be saved as a text file or html file? – xypha Sep 11 '16 at 7:58
  • tried tree /f>filelist.txt & it worked. – xypha Sep 11 '16 at 8:00
5

You will get UnixUtils at sourceforge, that will give you find.exe.

You can then do the following for list of all files with folder paths.

cd Path\to\folder
find.exe . -type f

There are other forms of the Unix command that may be useful for you.
The output is more search-able compared to the native dir and tree commands.


Updated with input from Johannes.
In the cmd.exe shell

dir /b /s

works quite well for a recursive listing in the Widows formatted form,
(so you see "C:\" and the reverse slashes, '\').
I completely missed the "\b" in Nifle's answer! (+1 for that now).

4
  • No need to install anything here, as dir is perfectly capable of this. – Joey Aug 31 '09 at 8:30
  • 1
    @Johannes, have you compared a Unix find output with a DOS dir /s or tree for that matter? – nik Aug 31 '09 at 9:36
  • 1
    Have you ever used dir /b? :-) – Joey Sep 2 '09 at 5:13
  • @Johannes, actually I cannot remember if I did that in the DOS 6.22 days. Got more used to find and with Cygwin, never tried the dos commands (actually took me a moment to open cmd shell and avoid /usr/bin/dir to try that option. But, it does work; glad to learn that :-) – nik Sep 2 '09 at 6:27
2

Why so complex? Press Windowskey+F to start the "File Search" in Windows. On the left, go to "Look in" and select the option at the bottom called "Browse...". Select the (sub)folder where you want to search in. Enter "*" (without the quotes) in the "All or part of the file name" editbox and start the search. Get some coffee when you're searching on a big disk with lots of data and just wait for this explorer-based search engine to show you a complete list. You can search it, open files directly and even narrow your search if need be.

Why do people forget this default search behaviour of Windows?

5
  • 3
    because it is not 1337? :-) – Natrium Aug 31 '09 at 13:14
  • 13
    You would have a hard time getting that in a text file, for example. – Joey Sep 2 '09 at 5:14
  • True, but why would someone wants it in a text file? :-) – Wim ten Brink Sep 2 '09 at 7:30
  • 2
    Note that this will (on Win XP at least) search all ZIP files in all subfolders as well. Which will be horribly slow. Which probably isn't what you want. Which can't be easily switched off. If there are no ZIP files, I agree that this is the best approach. – Martin Jan 26 '11 at 9:49
  • 1
    @Wim: Your 5-step process (Win+F, Browse, Subfolder, *, Start) is much slower than just typing "dir/s" (for a typist who types over 100 words per minute, and is used to doing stuff at a command prompt, so it is frequently pre-opened). Also, the process you mention has changed w/ Windows versions, while "dir/s" has been consistent. Also, your process requires pressing Win+F, which isn't always easy. Sometimes, even if a keyboard has the Windows key, that key may be more difficult to use, such as in Remote Access scenarios where the key might be used by the local computer instead of the remote – TOOGAM Oct 3 '15 at 13:06
2

I find this batch file every useful

DragDropListFile.bat

@ECHO OFF
SET targetPath="%~1"
SET ToolPath=%~dp0

dir %targetPath% /b /s /a-d > "%ToolPath%list.txt"

Usage: Just drag the folder and drop it on the file DragDropListFile.bat, then a file called list.txt, which contains what you want, is created.

If you don't like drag & drop, try this batch file

ListFile.bat

ECHO OFF

SET crtPath=%~dp0

dir "%crtPath%" /b /s /a-d > list.txt

Usage: put the file ListFile.bat in the folder you want to list files, then run the file ListFile.bat, then a file called list.txt, which contains what you want, is created.

0

dir /s /w >files.txt will get you most of the way there. It will keep the extensions. Then open files.txt in a text editor and either

  • sort all the lines and delete the superfluous ones
  • or remove them with a find and replace operation or 2.
    • The regex ^ +\d+ File.+\r\n\r\n Dir.+\r\n\r\n got rid of the gaps and folder details between the individual folder files listings for me in Notepad++.
  • Then just trim the top & tail of the text file.

Not the answer you're looking for? Browse other questions tagged or ask your own question.