批处理 - 如何回显%%变量%%

时间:2015-02-18 07:32:32

标签: variables batch-file cmd echo

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

以下是一个简单的示例:

我希望得到字符串“THERE”作为我的结果。 但我得到的结果只是“你好”

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

我已经尝试过这样的事情:

Echo %%result%%

可悲的是,它只是让我获得了结果%HELLO% 任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

%%result%%为您提供%result%输出的原因是%%令牌首先被解释为并且未进行进一步解释。

但是,您可以利用这个优势,使用以下技巧执行第二级间接:

@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所包围的那个(%...%)的解释(同样,双%%缩减为%),所以 it 也被解释,它用它来设置你传入的目标变量。

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

%(%result%)%

这就是你所追求的目标。


但是我可能会建议您开始研究Powershell,以便将来不必进行这些批量体操: - )