[英]How to ignore echo off and get the commands execution log
我有一个只读脚本,第一行关闭了回显。 例如带有内容的script.bat
:
@echo off
REM bunch of logic goes here
@echo on
是否有可能以某种方式欺骗它并以任何方式回显/打印所有命令? 我可以在脚本调用之前/之后调用任何东西,只是不能更改脚本代码本身。 我想它会是这样的:
REM what can I do here?
call script.bat
REM execution log printed?
这个冗长的命令逐行读取sample.bat
,对于没有明确指出@echo off
每一行,它会执行它,有效地跳过@echo off
。
@for /F "tokens=*" %a in (sample.bat) do @if NOT "%a" == "@echo off" %a
对于具有关闭命令回显的偷偷摸摸的方式的复杂 bat 文件,它可能并不完美,但它应该适用于大多数基本情况:
更简单的方法,即批处理文件只读是复制文件,删除@echo off
并运行复制的文件。
如果这不可能,您可以尝试使用 Jeb 发现的缓冲区溢出。 创建一个包含以下内容的批处理文件
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(比256个左括号多一点),打开一个cmd
实例并执行。 然后,从同一个cmd
实例调用script.bat
。 如果缓冲区溢出不干扰,也许您可以看到执行的命令。
此刻我不记得其他方式。
注意:只是为了完成,您所要求的在技术上是可行的,但不能直接解决。 前段时间,为了解决有关批处理文件调用、 goto
命令和标签的问题,我修补了cmd.exe
进程的副本以避开对何时输出正在执行的命令的任何检查,但此过程取决于确切版本的cmd
可执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.