执行内存中预加载的批处理文件

问题描述 投票:0回答:1

我在运行批处理文件时似乎遇到了边缘情况问题。我发现如果我运行如下所示的批处理文件(最好地显示问题):


ping localhost -n 10 >NUL
echo "HI" > test.txt

在 ping 循环期间,我删除了批处理文件,“test.txt”不会被创建。我本以为 Windows 会锁定批处理文件或将其预加载到内存中,但它似乎两者都没有做。

我尝试了

cmd /c test.bat
,但也遇到了这个问题,并导致在 ping 后尝试读取下一行时“找不到批处理文件”。

这是我的项目的一个边缘情况,批处理文件被提前覆盖,然后在原始代码完成之前被删除,但只是好奇我是否有任何简单的选项来解决这个问题。

batch-file
1个回答
0
投票

这样写:

(
ping localhost -n 10 >NUL
echo "HI" > test.txt
goto :EOF
)

即在末尾添加一个

goto :EOF
命令,这样(删除的)批处理文件的执行就到此结束,并将所有命令括在括号中,这样它们就全部“加载到内存中”并执行了,即使批处理文件同时被删除...

© www.soinside.com 2019 - 2024. All rights reserved.