在 cmd 中,当我们按 Ctrl+C 时,我们会终止目标应用程序,但是如果目标应用程序是从批处理文件中调用的,我们会收到“终止批处理作业 (Y/N)”确认。我永远不会记得我选择不终止批处理作业的实例。我们如何跳过此确认?
有没有一种简单的方法可以使用参数从 Windows 资源管理器启动应用程序?还是我必须从命令行实际运行它们?
自从我迁移到 Windows 7 以来,每当我开发 .bat 脚本时,我就有一次正确的机会。一旦我执行脚本,即使执行似乎已完成,它也会被未知进程锁定,并且我必须强制退出资源管理器或重新启动才能再次编辑 .bat 文件。
例如,如果我创建一个 .bat 文件,
@echo off
@start prog\ConsolePortable\ConsolePortable.exe
Run Code Online (Sandbox Code Playgroud)
然后在执行后意识到我需要更改脚本的某些方面,
@echo off
@cd prog\ConsolePortable
@start ConsolePortable.exe
Run Code Online (Sandbox Code Playgroud)
那么我将无法保存我的更改。例如,在 gvim 中,我收到消息“'console.bat'是只读的(添加!以覆盖)”,然后当我尝试覆盖时,我收到消息“E212:无法打开文件写作。”
当然,在我使用的每台计算机上都必须有某种不需要ProcessExplorer的脚本编写方法。无论如何,如何找到 .bat 文件的进程来阻止它呢?我尝试了 ProcessExplorer,但该公司试图阻止它却出现了 BSOD。我还尝试使用 cmd /c 代替 start。
编辑:ConsolePortable 在这里启动正常,并且似乎退出正常,但是以下测试设置不会冻结编辑器:
// Program.java
class Program {public static void main(String[] args) {System.exit(0);}}
// startProgram.bat
echo Starting Program in Java ...
start java Program
echo exiting bat file ...
Run Code Online (Sandbox Code Playgroud)
编辑2:也许我应该提到我是通过使用 cygwin 中的 touch 命令创建的文件。重新启动计算机后,我无法重复此问题,尽管我以前在其他计算机上遇到过该问题。