标题: [其他] 批处理端口扫描代码怎样改错? [打印本页]
作者: q6408425 时间: 2009-12-16 11:21 标题: 批处理端口扫描代码怎样改错?
- echo 您确定要使用%way%扫描%port%端口,按任意键继续,如果有问题请按Ctrl+C终止。
- pause
- del sip.txt
- echo 运行中请勿修改!>sip.txt
- for /f "tokens=1,2 delims= " %%a in (ip.txt) do (echo s.com %way% %%a %%b %port% 400 /save >>sip.txt)
- for /f " delims=:" %%i in ('findstr /n .* "sip.txt"') do set hang=%%i
- set now=1
- :scan
- cls
- for /f "skip=%now% tokens=1,* delims= " %%a in (sip.txt) do (set /a now+=1
- if %now% lss %hang% (%%a %%b&goto sql) else (goto end))
- :qingli
- FINDSTR /c:"%port% Open" Result.txt >>Result2.txt
- FOR /F "tokens=1 delims= " %%i in (Result2.txt) do @echo %%i >>sql.txt
- copy nul Result.txt /y
- copy nul Result2.txt /y
- goto sql
- :sql
- goto scan
- :end
- set now=1
- echo %now%
- pause
- goto scan
-
复制代码
上边代码循环有些问题。。。。。第一遍结束后会一直清空记事本。。。哪里有错误呢。。
作者: q6408425 时间: 2009-12-16 11:27
if %now% lss %hang% (%%a %%b&goto sql) else (goto end))
好像是这段判断没生效。。。
作者: neorobin 时间: 2009-12-16 11:28
清晰简化一下结构吧
goto 在穿花哦, 还有纯粹无意义的 goto:复制代码
还有一个无意义的标号
:qingli
作者: q6408425 时间: 2009-12-16 11:35
原帖由 neorobin 于 2009-12-16 11:28 发表
清晰简化一下结构吧
goto 在穿花哦, 还有纯粹无意义的 goto:goto sql
:sql还有一个无意义的标号
:qingli
呵呵。。刚做实验看哪里问题改了下。。
实际是判断 后goto 到清理执行清理。。。
然后清理完 然后goto 到 sql 执行其它命令。。
当全部执行完返回scan
继续读取下一行数据。。执行。。。
当执行完所有的,也就是now=hang 把now还原。。继续循环。。。
作者: neorobin 时间: 2009-12-16 11:37
建议楼主在代码中多处加入
echo {var}={!var!}
start notepad XXX.txt
pause
调试分析
直到找到故障所在
作者: q6408425 时间: 2009-12-16 11:43
echo 您确定要使用%way%扫描%port%端口,按任意键继续,如果有问题请按Ctrl+C终止。
pause
del sip.txt
echo 运行中请勿修改!>sip.txt
for /f "tokens=1,2 delims= " %%a in (ip.txt) do (echo s.com %way% %%a %%b %port% 400 /save >>sip.txt)
for /f " delims=:" %%i in ('findstr /n .* "sip.txt"') do set hang=%%i
set now=1
:scan
cls
for /f "skip=%now% tokens=1,* delims= " %%a in (sip.txt) do (%%a %%b)
set /a now+=1
FINDSTR /c:"%port% Open" Result.txt >>Result2.txt
FOR /F "tokens=1 delims= " %%k in (Result2.txt) do @echo %%k >>sql.txt
copy nul Result.txt /y
copy nul Result2.txt /y
if %now% lss %hang% (goto scan) else (goto end)
:end
set now=1
goto scan
整理完了。。。。呵呵
可以完成目的。。谢谢了。。
作者: q6408425 时间: 2009-12-16 11:46
不对这样好像就也有问题。。。我再研究下。。呵呵~~
循环解决了。。功能问题解决不了了。。呵呵~
作者: neorobin 时间: 2009-12-16 11:47
- if %now% lss %hang% (goto scan) else (goto end)
- :end
复制代码
上面的 else (goto end) 和 end 标号都是多余的
作者: neorobin 时间: 2009-12-16 11:50
- if %now% lss %hang% (goto scan) else (goto end)
- :end
- set now=1
- goto scan
复制代码
可改为- if %now% geq %hang% (set now=1)
- goto scan
复制代码
作者: q6408425 时间: 2009-12-16 11:50
echo 您确定要使用%way%扫描%port%端口,按任意键继续,如果有问题请按Ctrl+C终止。
pause
del sip.txt
echo 运行中请勿修改!>sip.txt
for /f "tokens=1,2 delims= " %%a in (ip.txt) do (echo s.com %way% %%a %%b %port% 400 /save >>sip.txt)
for /f " delims=:" %%i in ('findstr /n .* "sip.txt"') do set hang=%%i
set now=1
:scan
cls
for /f "skip=%now% tokens=1,* delims= " %%a in (sip.txt) do (%%a %%b&goto out)
ut
set /a now+=1
FINDSTR /c:"%port% Open" Result.txt >>Result2.txt
FOR /F "tokens=1 delims= " %%k in (Result2.txt) do @echo %%k >>sql.txt
copy nul Result.txt /y
copy nul Result2.txt /y
if %now% lss %hang% (goto scan) else (goto end)
:end
set now=1
goto scan
这样可以了。。呵呵。。。。每读取一行就跳出来。。执行要运行的代码。。。
然后再回去。。。。。
作者: q6408425 时间: 2009-12-16 11:51
原帖由 neorobin 于 2009-12-16 11:50 发表
if %now% lss %hang% (goto scan) else (goto end)
:end
set now=1
goto scan可改为if %now% geq %hang% (set now=1)
goto scan
恩。。这个不错。。呵呵。。现在改。。谢谢了。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |