批处理 - 如何回显 %%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,这样您以后就不必执行这些批量体操了:-)
我正在处理的批处理文件有一个小问题。
这是一个简单的示例:
我想得到字符串 "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,这样您以后就不必执行这些批量体操了:-)