Variables 如何在xpcmd脚本中将substring命令应用于double percent变量?

Variables 如何在xpcmd脚本中将substring命令应用于double percent变量?,variables,command-line,batch-file,windows-xp,Variables,Command Line,Batch File,Windows Xp,下面是如何使用普通变量的示例: 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:~

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

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%

或者你可以使用
调用
技术,但这很慢,而且有很多副作用

FOR /D %%d IN (c:\windows\*) DO (
  set "var=%%d"
  call echo %%var:~-7%%
)