我正在尝试构建一个批处理文件(使用 MS 记事本)来完成以下任务:
向控制台写入消息(“正在运行任务 X - 不要中断”)
运行一些命令,并将输出写入日志文件
暂停
清除屏幕(CLS)
向控制台写入不同的消息(“正在运行任务 Y - 不要中断”)
运行更多命令,并将输出写入日志文件
暂停直至手动清除屏幕
当我通过双击直接运行测试文件时,“清屏”命令按预期工作。 (当然,步骤2和6的输出也会显示在屏幕上,而不是写入日志文件)
当我从任务计划程序运行文件时,CLS 被忽略,两条消息都会显示在屏幕上 (在这种情况下,步骤 2 和 6 的输出被正确定向到日志文件)
从任务计划程序运行文件时如何正确清除屏幕?
我的批量测试文件:
@Echo OFF
mode con: cols=85 lines=40
echo === This machine is currently performing task "X" Please do NOT interrupt === >con
Dir PlaceHolder*
Pause >con
@CLS
echo === This machine is currently performing task "Y" Please do NOT interrupt === >con
Dir PlaceHolder2*
Pause >con
@Exit
事实证明,如果您只使用“@CLS”(就像我所做的那样),Clearscreen 命令会定向到 LOG 而不是屏幕。由于日志无法清除,因此批处理文件会在下一行输出前面添加一个向上箭头,然后就到此为止了。 您需要确保将 Clearscreen 命令显式路由到控制台/屏幕 (@CLS >con),在这种情况下它将按预期工作。