循环中的Windows批处理字符串操作

Rei*_*ard 2 windows cmd batch-file

我正在尝试在当前目录中创建目录"01","02","03",...,"11"和"12".但由于未知原因,我的填充"函数"为"0"在for循环中不起作用.

@Echo on
SET suffix=12
SET v=0%suffix%
SET v=%v:~-2%
echo %v%
pause

(SET suffix=12
SET v=0%suffix%
SET v=%v:~-2%
echo %v%)

pause

  FOR /L %%q IN (9,1,11) DO (
SET suffixb=%%q
SET w=0%suffixb%
SET w=%w:~-2%
echo %w%
  )
pause
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

MC *_* ND 5

在批处理文件中,解析,执行每行或每行(括号内的代码),并为下一行/块重复该过程.在解析阶段,删除所有变量读取,在代码开始执行之前用变量中的值替换.如果变量在行/块内更改其值,则无法从同一行/块内检索此更改的值,因为变量读取操作不存在.

解决它的常用方法是使用延迟扩展.启用后,您可以更改(如有必要)的语法%var%来!var!,指示该读操作必须被延迟,直到使用该值开始执行该命令的语法分析器.

setlocal enabledelayedexpansion
for /l %%a in (101 1 112) do (
    set "name=%%a"
    md "!name:~-2!"
)
Run Code Online (Sandbox Code Playgroud)