为什么 .bat 脚本在 Windows 7 中执行后会被锁定?

为什么 .bat 脚本在 Windows 7 中执行后会被锁定?

自从我换到 Windows 7 后,每当我开发 .bat 脚本时,我只有一次机会来做对。一旦我执行脚本,即使执行似乎已经完成,它也会被未知进程锁定,我必须强制退出资源管理器或重新启动才能再次编辑 .bat 文件。

例如,如果我创建一个 .bat 文件,

@echo off
@start prog\ConsolePortable\ConsolePortable.exe

然后在执行之后意识到我需要更改脚本的某些方面,

@echo off
@cd prog\ConsolePortable
@start ConsolePortable.exe

然后我就无法保存更改。例如,在 gvim 中,我收到消息“'console.bat' 是只读的(添加 ! 来覆盖)”,然后当我尝试覆盖时,我收到消息“E212:无法打开文件进行写入”。

当然一定有某种不需要进程探索器在我使用的每台计算机上。如何找到 .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 ...

编辑 2:也许我应该提到我是使用 cygwin 中的 touch 命令创建该文件的。重新启动计算机后,我无法复制此问题,尽管我以前在其他计算机上遇到过此问题。

答案1

我想说这可能是你的编辑器有错误,或者你设置了奇怪的权限。

我经常使用记事本(运行时)编辑批处理文件,并没有遇到问题。

不过,我不确定您是否可以注入命令 - 它会记住它所在的行号(我认为)。

例如在你的bat文件中,启动后,它将完成处理。

在第三行放置一个暂停,然后运行,但暂停后不要按任何键。编辑原始 bat 文件,在第四行放置一个命令 - 您将看到第四行将被处理。

答案2

我会尝试改变路线

@start ConsolePortable.exe

@start "myProgram" ConsolePortable.exe

来自http://ss64.com/nt/start.html

START“标题” [/Dpath] [选项]“命令” [参数]

笔记:

始终包含一个标题,这可以是一个简单的字符串,如“我的脚本”或只是一对空引号“”根据微软文档,标题是可选的,但如果省略它,您可能会遇到问题。

只需输入文件名作为命令,即可通过文件关联调用文档文件。例如,START "" WORD.DOC 将启动与 .DOC 文件扩展名关联的应用程序

前段时间,我尝试编写 VLC 脚本并在其中添加标题,解决了一个看似相关的问题,这让我措手不及。

相关内容