Windows 在循环中批量处理字符串
Windows batch string manipulation in loop
我正在尝试在当前目录中创建目录“01”、“02”、“03”...、“11”和“12”。但是由于未知原因,我的“0”的填充 'function' 在 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
在批处理文件中,每一行或每一行块(括号内的代码)都会被解析、执行并为下一个 line/block 重复该过程。在解析阶段,所有变量读取都被删除,在代码开始执行之前替换为变量中的值。如果变量在 line/block 中更改了它的值,则无法从相同的 line/block 中检索此更改的值,因为变量读取操作不存在。
通常的解决方法是使用延迟扩展。启用后,您可以(在需要时)将语法从 %var%
更改为 !var!
,指示解析器必须延迟读取操作,直到使用该值的命令开始执行。
setlocal enabledelayedexpansion
for /l %%a in (101 1 112) do (
set "name=%%a"
md "!name:~-2!"
)
我正在尝试在当前目录中创建目录“01”、“02”、“03”...、“11”和“12”。但是由于未知原因,我的“0”的填充 'function' 在 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
在批处理文件中,每一行或每一行块(括号内的代码)都会被解析、执行并为下一个 line/block 重复该过程。在解析阶段,所有变量读取都被删除,在代码开始执行之前替换为变量中的值。如果变量在 line/block 中更改了它的值,则无法从相同的 line/block 中检索此更改的值,因为变量读取操作不存在。
通常的解决方法是使用延迟扩展。启用后,您可以(在需要时)将语法从 %var%
更改为 !var!
,指示解析器必须延迟读取操作,直到使用该值的命令开始执行。
setlocal enabledelayedexpansion
for /l %%a in (101 1 112) do (
set "name=%%a"
md "!name:~-2!"
)