某朋友想做一个批处理,以完成他建立复杂的目录结构的要求
目录结果按某文本记录,类似这样的:
要按照这里面的序号来判断创建出这样的目录来:
01电影\0101动作片\010101国内\01010102港台
我熬了很久做了一个方面,列在下面。觉得肯定有很多不足的,大家有兴趣的也来一起试一试吧,希望能有更多更好的解决方案出来
目录结果按某文本记录,类似这样的:
01电影
0101动作片
010101国内
01010101大陆
01010102港台
010102国外
01010201欧美
01010202日韩
0102动画片
010201国内
010202国外
要按照这里面的序号来判断创建出这样的目录来:
01电影\0101动作片\010101国内\01010102港台
我熬了很久做了一个方面,列在下面。觉得肯定有很多不足的,大家有兴趣的也来一起试一试吧,希望能有更多更好的解决方案出来

SETLOCAL ENABLEDELAYEDEXPANSION
for /f %%x in (dirs.txt) do call :circle "%%x"
goto :eof
:circle
set "line=%~1"
set "left=!line:~0,2!"
set "right=!line:~2!"
set dirs=
::左边不含有数字,行错误退出
for /f %%r in ('echo !left!^|findstr /r "^"'
do goto :goon
goto :enext
:goon
::右边非数字起首,顶级目录,直接创建退出
for /f %%r in ('echo !right!^|findstr /r "^"'
do goto :deepgoon
set "!left!=!line!"
set "dirs=!dirs!!line!"
::echo "!dirs!"
md "!dirs!"
goto :next
:deepgoon
if not defined !left! goto :enext
for /f %%i in ('call call echo %%%left%%%'
do set "t_t=%%i"
set "dirs=!dirs!!t_t!\"
set t_t=
set "left=!left!!right:~0,2!"
set "right=!right:~2!
goto :goon
:enext
echo 此行数据有问题,跳过
:next
