我正在使用for循环编写批处理文件,但无法使左逻辑和中间逻辑正常工作。我已经成功地使此逻辑在for循环之外运行,并在此处附加了代码。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
REM ZKR
set /a value = 1000
set /a range = "%value%"
set /a secrange = "%value%"
for /l %%x in (1, 1, 10) do (
echo %range%
set range=%range:~0,1%
set secrange=%secrange:~1,3%
echo !range!
echo !secrange!
set "newstr=!range!.!secrange!"
echo !newstr!
PAUSE
)
此处显示输出。 Split 1000
因此上述cmd蝙蝠能够拆分字符串,然后将其与两个拆分字符串中间的句点标记组合。
但是,在我的for循环中,我没有达到这个结果。我知道这可能是语法问题,但我不确定如何解决(我已经尝试了很多不同的方法)。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
REM ZKR
set /a range = "X"
set /a secrange = "X"
for /l %%x in (1, 1, 10000) do (
if %%x geq 1000 (
if %%x lss 10000 (
set "range=%%x"
set "secrange=%%x"
echo !range!
echo !secrange!
set "range=%range%:~0,1%"
echo !range!
echo %range%
set secrange=%secrange:~1,3%
echo !secrange!
echo %secrange%
set "newstr=!range!.!secrange!"
echo !newstr!
PAUSE
)
REM End x greater 1000
)
REM End for loop
)
我使用secrange的方式与不使用for循环的原始代码相同。我尝试使用许多不同的语法组合来操作范围部分,但无法输出左字符1。我只能为两个字符输出0。
我在这里附加了输出。 Bad Output
我知道这里有错误(回音关闭)。请忽略它只是基于我的个人测试的回声输出类型。
重要的两个输出是第三和第四行(以正确的语法为准)。有谁知道如何解决语法问题,以便在for循环中获得左字符1000,并在1000的剩余3个零值上得到答案?