Board logo

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

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

在本论坛上看到了这么一段

  Quote:
@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
代码是一行行的写在文件中的
想到了也来个多线程   于是参照上面的代码  写了...

  Quote:
@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

这样行吗?
CODE:  [Copy to clipboard]
@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 楼

多线程?

这样?

  Quote:
@echo off
for /f %%a in (ip.txt) do (
  start test.exe %%a >nul&&echo %%a>>test.txt
)


作者: moniuming     时间: 2008-12-21 20:01
这样?
CODE:  [Copy to clipboard]
@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


  Quote:
Originally posted by pcode at 2008-12-22 12:23:
十分感謝  不過這個"%~fs0"  是什么意思呢



  Quote:
for /?
%~fI        - 将 %I 扩充到一个完全合格的路径名
%~sI        - 扩充的路径只含有短名
%~fsI       - 仅将 %I 扩充到一个带有短名的完整路径名


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




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5