我在运行批处理文件时似乎遇到了边缘情况问题。我发现如果我运行如下所示的批处理文件(最好地显示问题):
ping localhost -n 10 >NUL
echo "HI" > test.txt
在 ping 循环期间,我删除了批处理文件,“test.txt”不会被创建。我本以为 Windows 会锁定批处理文件或将其预加载到内存中,但它似乎两者都没有做。
我尝试了
cmd /c test.bat
,但也遇到了这个问题,并导致在 ping 后尝试读取下一行时“找不到批处理文件”。
这是我的项目的一个边缘情况,批处理文件被提前覆盖,然后在原始代码完成之前被删除,但只是好奇我是否有任何简单的选项来解决这个问题。
这样写:
(
ping localhost -n 10 >NUL
echo "HI" > test.txt
goto :EOF
)
即在末尾添加一个
goto :EOF
命令,这样(删除的)批处理文件的执行就到此结束,并将所有命令括在括号中,这样它们就全部“加载到内存中”并执行了,即使批处理文件同时被删除...