List files recursively showing only full path and file size from Windows Command Prompt
List files recursively showing only full path and file size from Windows Command Prompt The Question: I am trying to generate a text file containing the filename (including full path) and file size for all files in a particular directory and any of its sub- directories (i.e. recursively). Ideally, I don't want commas in the file size (but I'll settle for them!) The following command does it but without the file size: dir /b /s /a:-D > results.txt An example output would look like: C:\Users\Martin\Pictures\Table\original\PC120013.JPG 227298 C:\Users\Martin\Pictures\Table\original\PC120014.JPG 123234 C:\Users\Martin\Pictures\Table\original\PC120015.JPG 932344 I don't think this is possible using dir alone, although I would love to be proved wrong. Is there another way to do this, using only commands that are available from the Command Prompt? Solutions: Please watch the whole video to see all solutions, in order of how many people found them helpful == This solution helped 30 people == This should do it: @echo off & for /f %a in ('dir /s /b') do echo %~fa %~za It's not very efficient...running it for folders containing a ton of files may be sketchy, so try it on small folders first. From the "for /?" help text (I used 'a' instead of 'I') In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax: %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only %~dp$PATH:I - searches the directories listed in the PATH environment variable for %I and expands to the drive letter and path of the first one found. %~ftzaI - expands %I to a DIR like output line With thanks & praise to God, and with thanks to the many people who have made this project possible! | Content (except music & images) licensed under cc by-sa 3.0 | Music: https://www.bensound.com/royalty-free-music | Images: https://stocksnap.io/license & others | With thanks to user user23715 (https://superuser.com/users/616992), user someguy (https://superuser.com/users/886593), user rogersillito (https://superuser.com/users/299505), user nixda (https://superuser.com/users/50173), user natasha (https://superuser.com/users/420238), user Matthias Luh (https://superuser.com/users/250532), user Martin Wilson (https://superuser.com/users/161272), user Brian Adkins (https://superuser.com/users/144802), user BillR (https://superuser.com/users/255859), and the Stack Exchange Network (http://superuser.com/questions/653860). Trademarks are property of their respective owners. Disclaimer: All information is provided "AS IS" without warranty of any kind. You are responsible for your own actions. Please contact me if anything is amiss at Roel D.OT VandePaar A.T gmail.com.
List files recursively showing only full path and file size from Windows Command Prompt The Question: I am trying to generate a text file containing the filename (including full path) and file size for all files in a particular directory and any of its sub- directories (i.e. recursively). Ideally, I don't want commas in the file size (but I'll settle for them!) The following command does it but without the file size: dir /b /s /a:-D > results.txt An example output would look like: C:\Users\Martin\Pictures\Table\original\PC120013.JPG 227298 C:\Users\Martin\Pictures\Table\original\PC120014.JPG 123234 C:\Users\Martin\Pictures\Table\original\PC120015.JPG 932344 I don't think this is possible using dir alone, although I would love to be proved wrong. Is there another way to do this, using only commands that are available from the Command Prompt? Solutions: Please watch the whole video to see all solutions, in order of how many people found them helpful == This solution helped 30 people == This should do it: @echo off & for /f %a in ('dir /s /b') do echo %~fa %~za It's not very efficient...running it for folders containing a ton of files may be sketchy, so try it on small folders first. From the "for /?" help text (I used 'a' instead of 'I') In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax: %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only %~dp$PATH:I - searches the directories listed in the PATH environment variable for %I and expands to the drive letter and path of the first one found. %~ftzaI - expands %I to a DIR like output line With thanks & praise to God, and with thanks to the many people who have made this project possible! | Content (except music & images) licensed under cc by-sa 3.0 | Music: https://www.bensound.com/royalty-free-music | Images: https://stocksnap.io/license & others | With thanks to user user23715 (https://superuser.com/users/616992), user someguy (https://superuser.com/users/886593), user rogersillito (https://superuser.com/users/299505), user nixda (https://superuser.com/users/50173), user natasha (https://superuser.com/users/420238), user Matthias Luh (https://superuser.com/users/250532), user Martin Wilson (https://superuser.com/users/161272), user Brian Adkins (https://superuser.com/users/144802), user BillR (https://superuser.com/users/255859), and the Stack Exchange Network (http://superuser.com/questions/653860). Trademarks are property of their respective owners. Disclaimer: All information is provided "AS IS" without warranty of any kind. You are responsible for your own actions. Please contact me if anything is amiss at Roel D.OT VandePaar A.T gmail.com.