批处理 - 如何回显 %%Variable%%

Batch - How to Echo %%Variable%%

我正在处理的批处理文件有一个小问题。

这是一个简单的示例:

我想得到字符串 "THERE" 作为我的结果。 但是我得到的结果只是 "HELLO"

set hello=there
set a=h
set b=ello 
set result=%a%%b%
echo %result%

我已经试过这样的东西了:

Echo %%result%%

遗憾的是,它只是让我得到结果 %HELLO% 任何帮助都会很棒。谢谢!

%%result%% 在输出中给你 %result% 的原因是 %% 标记首先被解释 进一步解释是未完成。

但是,您可以利用它来发挥自己的优势,使用以下技巧进行 second 级别的间接访问:

@echo off
set result=hello
echo %result%
call :iset second %%result%%
echo %second%
goto :eof

:iset
    for /F "usebackq tokens=*" %%i in (`echo %%%2%%`) do set %1=%%i
    goto :eof

秘密在于传递你想要解释的东西(在这种情况下,%%result%% 按照第一段中规定的规则传递文字 %result% 不是解释一下)。

for 循环然后回显被 %...% 包围的 (hello) 的解释(同样,双重 %% 减少为 %) ,因此 也被解释,并且它使用它来设置您也传入的目标变量。

结果是它有效地为您提供:

%(%result%)%

这就是你想要的。


不过,我可能建议您开始研究 Powershell,这样您以后就不必执行这些批量体操了:-)