Board logo

标题: [求助]批处理start实现多线程的问题 [打印本页]

作者: pcode     时间: 2008-12-21 15:37    标题: [求助]批处理start实现多线程的问题

在本论坛上看到了这么一段
@echo off if [%1]==[] (Goto :Start) else (Goto ing) :Start set "ip=172.16.45" for /L %%i in (1,1,254) do Start %~s0 %ip%.%%i Goto :eof ing ping %1 -n 1 -w 1 >nul&&echo %1 >>ip.txt exit
是ping的多线程 用start实现循环 我这里有个工具的命令格式是 文件名+ip 代码是一行行的写在文件中的 想到了也来个多线程 于是参照上面的代码 写了...
@echo off if [%%1]==[] (Goto :Start) else (Goto :test) :Start for /F %%i in (ip.txt) do start %~s0 %%i Goto :eof :test test.exe %%1 >nul&&echo %%1 >>test.txt pause
ps:test 是工具的文件名 以为这个批处理能够处理多线程 但是随后发现.... 只能够处理 ip.txt的第一行ip 后面的就执行了 真是郁闷.... 各位大哥大姐 能看看我这段批处理是错在哪里么?

作者: tireless     时间: 2008-12-21 16:11
不是 %%1,是 %1。 这样行吗?
@echo off
for /f %%a in (ip.txt) do (
  test.exe %%a >nul&&echo %%a>>test.txt
)

作者: pcode     时间: 2008-12-21 16:17
%1也不行的... 还有你写的那个虽然可以 但不是多线程的~ 不过还是谢谢啦!!

作者: tireless     时间: 2008-12-21 16:28    标题: Re 3 楼

多线程? 这样?
@echo off for /f %%a in (ip.txt) do ( start test.exe %%a >nul&&echo %%a>>test.txt )

作者: moniuming     时间: 2008-12-21 20:01
这样?
@echo off
if not "%1"=="" goto :test
for /f "delims=" %%a in (ip.txt) do (
  start "" "%~fs0" %%a
)
exit
:test
test.exe %1 >nul&&>>test.txt echo %1
exit

作者: pcode     时间: 2008-12-22 12:23
十分感謝 不過這個"%~fs0" 是什么意思呢

作者: moniuming     时间: 2008-12-22 13:00
Originally posted by pcode at 2008-12-22 12:23: 十分感謝 不過這個"%~fs0" 是什么意思呢
for /? %~fI - 将 %I 扩充到一个完全合格的路径名 %~sI - 扩充的路径只含有短名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

作者: cny798     时间: 2009-1-23 22:34
太强了,还有这东西?

作者: cny798     时间: 2009-1-23 22:34
太强了,还有这东西?