如何将子字符串命令应用于XP cmd脚本中的双百分比变量



下面是使用普通变量的示例:

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%%
)

最新更新