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
Post a Comment