下面是使用普通变量的示例:
SET _test=123456789abcdef0
SET _result=%_test:~-7%
ECHO %_result%
:: that shows: abcdef0
但是如何处理以双%开头的变量(如%%A
),这样的变量在for循环中是需要的:
FOR /D %%d IN (c:windows*) DO (
echo %%d
)
可以,但是:
FOR /D %%d IN (c:windows*) DO (
echo %%d:~-7%
)
简单地将:~-7
复制到echo命令
替换和子字符串语法只适用于变量,不适用于参数。
但是您可以简单地将参数复制到一个变量中,然后使用子字符串语法。
setlocal EnableDelayedExpansion
FOR /D %%d IN (c:windows*) DO (
set "var=%%d"
echo !var:~-7!
)
这里需要延迟展开,因为正常的%var%将在解析整个块时展开,而不是在执行时展开。
或者你可以使用call
技术,但这是非常缓慢的,有许多副作用。
FOR /D %%d IN (c:windows*) DO (
set "var=%%d"
call echo %%var:~-7%%
)