Batch recursing through folders & populating an array -


i looking recurse through folders/subfolders/etc. & populate array folder paths dynamically.

example: have folder called "a" has 2 subfolders "b" & "c". "c" has sub folder "d". array be:

folder[01]=a folder[02]=a/b folder[03]=a/c folder[04]=a/c/d 

would for/ d command work need? if so, how take loop gets & add array? has in batch unfortunately. thank you!

how populate array folder paths dynamically.

use following batch file (makefolderarray.cmd):

@echo off setlocal enabledelayedexpansion rem length of %cd% (the current directory) call :strlen cd _length set /a _index=1 /d /r %%a in (*) (   set _name=%%a   rem remove drive root current directory,    rem _length chars   call set _name=!!_name:~%_length%!!   rem replace \ /   set _name=!_name:\=/!   set folder[0!_index!]=!_name!   set /a _index+=1   ) set /a _index-=1 /l %%i in (1,1,%_index%) (   echo folder[0%%i]=!folder[0%%i]!   ) endlocal goto :eof  :strlen  strvar  [rtnvar] setlocal disabledelayedexpansion set len=0 if defined %~1 /f "delims=:" %%n in (   '"(cmd /v:on /c echo(!%~1!&echo()|findstr /o ^^"' ) set /a "len=%%n-3" endlocal & if "%~2" neq "" (set %~2=%len%) else echo %len% exit /b 

example:

f:\test>makefolderarray folder[01]=/a folder[02]=/a/b folder[03]=/a/c folder[04]=/a/c/d 

credits:

thanks dbenham strlen code this answer (which works if string contains \ characters).


further reading

  • an a-z index of windows cmd command line - excellent reference things windows cmd line related.
  • dir - display list of files , subfolders.
  • for /l - conditionally perform command range of numbers.
  • for /d - conditionally perform command on several directories/folders.
  • set - display, set, or remove cmd environment variables. changes made set remain duration of current cmd session.
  • variable edit/replace - edit , replace characters assigned string variable.
  • variables - extract part of variable (substring).

Comments