当我从一个Windows的.bat
文件调用另一个文件时,被调用的文件可以知道调用方中ECHO
是ON
还是OFF
吗?
进入一个.bat
文件时,ECHO
设置为ON
(即使在CALLER中它是OFF
)。
我希望保留调用者的ECHO
状态,以便我可以从同一位置控制两个文件(可能是超过两个嵌套调用)。
我可以传递参数或设置自己的环境变量,但是否有更好的方法?
编辑 为了澄清需要的内容: callee.cmd 需要在其运行期间仅关闭 echo。返回到其调用方后,它必须恢复调用方原有的 echo 状态。
请在以下脚本中填写 ?????:
callee.cmd:
@rem save the echo state
@ ???? HOW???? ????
@ set "savedEchoState=??????"
@rem the following commands must not be echoed
@echo off
command1
command2
command3
@rem restore the previous echo state
echo %savedEchoState%
caller1.cmd:
@echo off
call callee.cmd
echo
caller2.cmd:
@echo on
call callee.cmd
echo
需要的输出:
caller1.cmd 必须打印 echo off
,caller2.cmd 必须打印 echo on
。
能否在不创建任何磁盘文件的情况下完成?
@echo off
,因为在交互提示符下echo是开启的。但是,如果我们故意在调用者批处理中打开echo,并调用以@echo off
开头的此批处理文件,则在退出之前我们需要将echo重新设置为on,以便调用者保持其echo-on状态。 - Klitos Kyriacou