我正在处理的批处理文件存在一个小问题。
以下是一个简单的示例:
我希望得到字符串“THERE”作为我的结果。 但我得到的结果只是“你好”
set hello=there
set a=h
set b=ello
set result=%a%%b%
echo %result%
我已经尝试过这样的事情:
Echo %%result%%
可悲的是,它只是让我获得了结果%HELLO% 任何帮助都会很棒。谢谢!
答案 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,以便将来不必进行这些批量体操: - )