批处理文件:从循环中的字符串末尾提取字符

时间:2015-08-09 15:30:12

标签: windows batch-file cmd

我想从字符串末尾提取字符。


    SETLOCAL EnableDelayedExpansion

    SET str=123456789abcdefgh

    FOR /l %%x IN (1, 1, 10) DO (
       ECHO %%x
       SET result=%%str%:~-%%x%
       ECHO "Extracted characters: " !result!
    )

    ENDLOCAL

这是我错误的输出:

1
“提取的字符:”%str:〜-1

2
“提取的字符:”%str:〜-2

2 个答案:

答案 0 :(得分:5)

您不应使用
SET result=%%str%:~-%%x%

相反,
SET result=!str:~-%%x!

答案 1 :(得分:0)

我会将延迟扩展用作dark fang has done。但只是为了表明还有另一种方式,尽管速度要慢得多:

@echo off
setlocal
SET str=123456789abcdefgh

FOR /l %%x IN (1, 1, 10) DO (
  ECHO %%x
  CALL ECHO %%str:~-%%x%%
)

通过几次迭代,缓慢并不明显,但是数千次迭代的循环会明显变慢。