这是代码。由于我是批处理脚本的新手,我无法理解为什么使用 .lock 以及为什么它小于等于 9 。
set "lock=%temp%\wait%random%.lock"
start "" cmd /c 9>="%lock%1" abcd.bat 4441 %tempdate%
start "" cmd /c 9>="%lock%2" pqrs.bat 4442 %tempdate%
for %%N in (1 2 3 4 5 6 7 8 9) do (
9>="%lock%%%N" || goto :Wait
) 2>nul
答案 0 :(得分:4)
9>
不是比较表达式,它是输出流9的重定向
语法9>=
是无意义的,因为=
在这里没有意义,因为它将被删除。
输出流9通常不存在,输出将为空文件“wait1000.lock1”和“wait1000.lock2”(假设%random%
在这种情况下为1000)。
FOR循环只是测试它是否可以写入同一个文件,这将被阻止,直到批处理文件退出并且写锁定将被释放。
虽然至少有一个文件被锁定,但命令9>"%lock%%%N"
失败,然后goto :wait
将被执行。
顺便说一下。您的示例文件中缺少标签:Wait
,
它应该在FOR-loop之前插入