这是代码。由于我是批处理脚本的新手,我无法理解为什么使用 .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
最佳答案
9>
不是比较表达式,它是输出流 9 的重定向。
语法 9>=
是无意义的,因为 =
在这里没有任何意义,因为它将被删除。
输出流 9 通常不存在,输出将是空文件“wait1000.lock1”和“wait1000.lock2”(假设 %random%
在这种情况下为 1000)。
FOR 循环简单地测试它是否可以写入同一个文件,这将被阻塞,直到批处理文件退出并释放写锁。
当至少一个文件被锁定时,命令 9>"%lock%%%N"
失败,然后 goto :wait
将被执行。
顺便说一句。示例文件中缺少标签 :Wait
,
它应该在 FOR 循环之前插入
关于windows - 实现多线程时,批处理文件中的 ".lock"有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40584134/