我写了一个批处理文件,假定该文件可以创建多个文件夹,编号从1到20,并且填充数字小于小于10且为0。它创建了文件夹,但没有填充它们,即1,2,3 ...,但我希望它是01,02,03。
FOR /L %%G IN (1,1,20) DO (
IF %%G LSS 10 (
SET J=0
md %J%%%G
) ELSE (
SET J=""
md %J%%%G
)
)
@pause
答案 0 :(得分:0)
一个简单的想法,根据我的评论,使用两行代码:
@FOR /L %%A IN (1,1,9) DO @MD 0%%A 2>NUL
@FOR /L %%A IN (10,1,20) DO @MD %%A 2>NUL
您也可以通过不必不必要地设置变量来在一排中做到这一点:
@FOR /L %%A IN (1,1,20) DO @IF %%A LSS 10 (MD 0%%A 2>NUL) ELSE MD %%A 2>NUL
或者您可以在循环之前设置变量:
@SET "J=0"
@FOR /L %%A IN (1,1,20) DO @IF %%A LSS 10 (MD "%J%%%A" 2>NUL) ELSE MD %%A 2>NUL
您仍然可以在循环中设置变量,并使用Call
强制将其展开:
@FOR /L %%A IN (1,1,20) DO @IF %%A LSS 10 (SET "J=0" && CALL MD "%%J%%%%A" 2>NUL) ELSE MD %%A 2>NUL
或使用延迟扩展对其进行扩展:
@SETLOCAL ENABLEDELAYEDEXPANSION
@FOR /L %%A IN (1,1,20) DO @IF %%A LSS 10 (SET "J=0" && MD "!J!%%A" 2>NUL) ELSE MD %%A 2>NUL
您可以解析结果以删除开头的1
:
@FOR /L %%A IN (101,1,120) DO @SET "VAR=%%A" && CALL MD "%%VAR:~-2%%" 2>NUL
或使用延迟扩展:
@SETLOCAL ENABLEDELAYEDEXPANSION
@FOR /L %%A IN (101,1,120) DO @SET "VAR=%%A" && MD !VAR:~-2! 2>NUL