本帖最后由 hlzj88 于 2023-9-28 21:44 编辑
问题已经完美解决了,特别感谢 77七 在18楼的建议。
下面说说我的处理方法:因为需要同时在3个文件夹内运行,他们之间排除tasklist不能满足的情况,最好就是判断他们上层文件夹是否有判断依据。但是这个依据也可能被两个同时判断到导致冲突,所以接受 77七 的建议,move走, 77七建议是move 走 exe ,我改为move 走标志文件,他们各自判断自己是否抢到标志文件,抢到的运行,并再次在上层给出标志文件供 抢。原理如此。
因为还有单独运行的可能,所以额外添加了不抢标志的判断。
下面是关键点的源码,我写的差,供大家理解斧正。
有一个先行条件,并用时,三个文件夹尾数需带数字,也许可以不用,我还没有考虑是否可以。- rem 多个复用避免冲突
- set tj=%~p0
- set tj=!tj:\=!
- set jh=!tj!
- echo !jh!
- for %%i in (1 2 3 4 5 6 7 8 9 0) do set tj=!tj:%%i=!
- set tj=!tj: =!
- echo !tj!
- echo !tj!>a.ini
- for /f "delims=" %%i in (a.ini) do set jh=!jh:%%i=!&&echo !jh!>b.ini
- findstr /i "1 2 3 4 5 6 7 8 9 0" b.ini&&echo, || echo,>abcd.ini
- rem 不用变量是同时几个变量容易被串用
- rem 在几个文件夹同时运行要求文件夹名称需末尾带数字。上面是判断是否是在几个文件夹同时运行,即便是带数字单一文件运行,也不影响正常运行。
- if not exist ..\a.ini (echo,>..\a.ini) else (ping /n 3 127.1)
复制代码
- if exist abcd.ini htox32c /IP /S1 /O0 testmm.html>nul 2>nul&&goto cl
- rem 下面开始抢权
- :ydx
- for /f "delims=" %%i in (b.ini) do (
- move /y ..\a.ini %%i.ini>nul
- if exist %%i.ini (htox32c /IP /S1 /O0 testmm.html>nul 2>nul) else (goto ydx)
- del /f/q %%i.ini>nul
- )
- goto :cl
-
- :cl
- if not exist abcd.ini echo,>..\a.ini
复制代码 再次谢谢大家!我都怀疑是否可以做到这功能,现三个文件夹各500+html已成功运行完成,无冲突。第一段放bat开头,第二段放需要抢权位置 |