For循环批处理文件中的字符串左移和中移

时间:2018-07-18 01:50:11

标签: batch-file cmd scripting

我正在使用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个零值上得到答案?

0 个答案:

没有答案