Windows “有什么用?”;。锁;在批处理文件中执行多线程时?
这是代码。由于我是批处理脚本新手,我无法理解为什么使用.lock,以及为什么它小于等于9Windows “有什么用?”;。锁;在批处理文件中执行多线程时?,windows,multithreading,batch-file,cmd,Windows,Multithreading,Batch File,Cmd,这是代码。由于我是批处理脚本新手,我无法理解为什么使用.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>="
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循环之前插入,FOR循环不是比较表达式,而是输出流9的重定向。
语法
9>=
毫无意义,因为=
在这里没有意义,因为它将被删除
输出流9通常不存在,输出将是空文件“wait1000.lock1”和“wait1000.lock2”(假设本例中%random%
为1000)
FOR循环只是测试它是否可以写入同一个文件,这将被阻止,直到批处理文件退出并释放写锁。当至少有一个文件被锁定时,命令
9>“%lock%%%N”
失败,然后执行goto:wait
顺便说一句,示例文件中缺少标签:Wait
,它应该在FOR循环之前插入。锁是一个文件扩展名,永远不会与9进行比较。与环境变量%lock%进行比较。根本没有任何比较
9>=
在语法上等同于9>
,这是一个文件重定向操作。如果此代码的目的是等待所有已启动的进程结束,则在中给出了一个简单得多的解决方案。lock是一个文件扩展名,永远不会与9进行比较。与环境变量%lock%进行比较。根本没有任何比较9>=
在语法上等同于9>
,这是一个文件重定向操作。如果此代码的目的是等待所有启动的进程结束,那么在感谢您的回答中会给出一个更简单的解决方案,这非常有帮助。感谢您的回答,这非常有帮助。