我希望通过文件夹/子文件夹/等进行递归。 & 使用文件夹路径动态填充数组。
示例:我有一个名为“A”的文件夹,其中有 2 个子文件夹“B”和“C”。 “C”有一个子文件夹“D”。所以数组将是:
Folder[01]=A
Folder[02]=A/B
Folder[03]=A/C
Folder[04]=A/C/D
FOR/ D 命令可以满足我的需要吗?如果是这样,我如何获取循环获取的内容并将其添加到数组中?不幸的是必须批量。谢谢你!
如何动态地使用文件夹路径填充数组。
使用以下批处理文件 (MakeFolderArray.cmd):
@echo off
setlocal enabledelayedexpansion
rem get length of %cd% (the current directory)
call :strlen cd _length
set /a _index=1
for /d /r %%a in (*) do (
set _name=%%a
rem remove everything from the drive root up to the current directory,
rem which is _length chars
call set _name=!!_name:~%_length%!!
rem replace \ with /
set _name=!_name:\=/!
set Folder[0!_index!]=!_name!
set /a _index+=1
)
set /a _index-=1
for /l %%i in (1,1,%_index%) do (
echo Folder[0%%i]=!Folder[0%%i]!
)
endlocal
goto :eof
:strLen strVar [rtnVar]
setlocal disableDelayedExpansion
set len=0
if defined %~1 for /f "delims=:" %%N in (
'"(cmd /v:on /c echo(!%~1!&echo()|findstr /o ^^"'
) do 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:
谢谢dbenham为了strlen
代码来自这个答案(如果字符串包含,则有效\
人物)。
进一步阅读
-
Windows CMD 命令行的 A-Z 索引- 与 Windows cmd 行相关的所有内容的绝佳参考。
-
dir- 显示文件和子文件夹的列表。
-
for /l- 有条件地对一系列数字执行命令。
-
for /d- 有条件地对多个目录/文件夹执行命令。
-
set- 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
-
变量编辑/替换- 编辑并替换分配给字符串变量的字符。
-
变量- 提取变量的一部分(子字符串)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)