![批处理文件运行后不会退出(当生成多个批处理文件时)](https://linux22.com/image/1444987/%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E5%90%8E%E4%B8%8D%E4%BC%9A%E9%80%80%E5%87%BA%EF%BC%88%E5%BD%93%E7%94%9F%E6%88%90%E5%A4%9A%E4%B8%AA%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%89.png)
当生成多个批处理文件时,此批处理文件(所有其他批处理文件)在运行后将不会退出。
我是一名经验丰富的 MS-DOS/Windows/Java 开发人员,之前从未见过这种行为。发生了一些非常奇怪的事情,我希望得到解决方法或一些线索。
举个例子,我制作了一个简单的测试脚本,名为 hung.bat,在 Windows 8.1(32 位)机器上通过命令提示符或单击文件来运行它:
@ECHO OFF
ECHO WELCOME TO HUNG
pause
ECHO HANGING UP
EXIT (**does not matter if this line is blank or EXIT or GOTO:EOF **)
我进入每个终端并按下继续键。然后它们都说“挂断”。
如果我打开了多个,它们在完成后不会关闭并退出。当我从命令提示符中使用“start hung.bat”或单击批处理文件时会发生这种情况。
我制作了这个简单的批处理文件来调试我们遇到的服务器服务问题——网络服务器使用批处理文件来获取一些数据,当它有多个会话时,它们也会停滞并且无法完成。
似乎与文件无关 如果我复制两份文件 hung1.bat 和 hung2.bat 并分别单击一次,那么就会发生相同的行为!
家用机器上的不同行为 批处理脚本在我家用的 Windows 机器(Windows 8.1 32 位)上可以运行,但在我的工作机器(也是 Windows 8.1 32 位,许可的全新 Windows 8.1 安装)上却不行。但即使我是管理员并以管理员身份运行,它仍然无法在我的工作机器上运行。
我甚至已经从 Windows Defender 中排除了该目录中的文件。
甚至更陌生 当我打开两个或更多命令窗口(命令或单击三次)时,最后一个窗口将正常工作并按预期关闭。但是,如果我单击第一个窗口(即最后一个窗口失去焦点),然后返回最后一个窗口,它也不再正常工作!
设置 我的家用电脑是 Windows 8.1 32 位,采用 AMD Phenom II x4 CPU,内存为 3GB。我的工作电脑是 Windows 8.1 32 位,采用 INter Core-i5-4570 CPU,内存为 4.00 GB(可用内存为 3.32 GB)。两台电脑都只使用 Windows Defender。即使关闭 Defender 并打开或关闭 DEP,也会发生这种情况。
更新 我们用 MalwareBytes 扫描了系统,还用 Windows 检查了文件的完整性。一切检查结果与以前一样,但问题仍然存在。
答案1
它是 LogMeIn ...
当远程用户连接时,它会改变命令 shell 窗口的行为,以便当脚本完成时它不会关闭 - 即使脚本是从快捷方式调用或使用“start ...”调用到单独的窗口中
我们发现,我断开了远程用户的连接,然后执行相同的批处理脚本,问题就解决了。
ShowMyPc 运行良好。我们没有测试 Windows Remote PC。
所以 LogMeIn 是罪魁祸首……