Board logo

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

作者: pcode     时间: 2008-12-21 15:37    标题: [求助]批处理start实现多线程的问题
在本论坛上看到了这么一段
@echo off
if == (Goto :Start) else (Goto <img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">ing)
:Start
set "ip=172.16.45"

for /L %%i in (1,1,254) do Start %~s0 %ip%.%%i
Goto :eof
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">ing
ping %1 -n 1 -w 1 >nul&&echo %1 >>ip.txt
exit

是ping的多线程 用start实现循环
我这里有个工具的命令格式是 文件名+ip
代码是一行行的写在文件中的
想到了也来个多线程 于是参照上面的代码 写了...

@echo off
if == (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
太强了,还有这东西?