我想从字符串末尾提取字符。
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
答案 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%%
)
通过几次迭代,缓慢并不明显,但是数千次迭代的循环会明显变慢。