[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理端口扫描代码怎样改错?

  1. echo 您确定要使用%way%扫描%port%端口,按任意键继续,如果有问题请按Ctrl+C终止。
  2. pause
  3. del sip.txt
  4. echo 运行中请勿修改!>sip.txt
  5. for /f "tokens=1,2 delims= " %%a in (ip.txt) do (echo s.com %way% %%a %%b %port% 400 /save >>sip.txt)
  6. for /f " delims=:" %%i in ('findstr /n .* "sip.txt"') do set hang=%%i
  7. set now=1
  8. :scan
  9. cls
  10. for /f "skip=%now% tokens=1,* delims= " %%a in (sip.txt) do (set /a now+=1
  11. if %now% lss %hang% (%%a %%b&goto sql) else (goto end))
  12. :qingli
  13. FINDSTR /c:"%port%  Open" Result.txt >>Result2.txt
  14. FOR /F "tokens=1 delims= " %%i in (Result2.txt) do @echo %%i >>sql.txt
  15. copy nul Result.txt /y
  16. copy nul Result2.txt /y
  17. goto sql
  18. :sql
  19. goto scan
  20. :end
  21. set now=1
  22. echo %now%
  23. pause
  24. goto scan
复制代码



上边代码循环有些问题。。。。。第一遍结束后会一直清空记事本。。。哪里有错误呢。。

if %now% lss %hang% (%%a %%b&goto sql) else (goto end))

好像是这段判断没生效。。。

TOP

清晰简化一下结构吧

goto 在穿花哦,  还有纯粹无意义的 goto:
  1. goto sql
  2. :sql
复制代码
还有一个无意义的标号
:qingli

TOP

原帖由 neorobin 于 2009-12-16 11:28 发表
清晰简化一下结构吧

goto 在穿花哦,  还有纯粹无意义的 goto:goto sql
:sql还有一个无意义的标号
:qingli


呵呵。。刚做实验看哪里问题改了下。。

实际是判断  后goto 到清理执行清理。。。

然后清理完 然后goto 到 sql 执行其它命令。。

当全部执行完返回scan

继续读取下一行数据。。执行。。。

当执行完所有的,也就是now=hang 把now还原。。继续循环。。。

TOP

建议楼主在代码中多处加入
echo {var}={!var!}
start notepad XXX.txt
pause
调试分析
直到找到故障所在

TOP

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



整理完了。。。。呵呵

可以完成目的。。谢谢了。。

TOP

不对这样好像就也有问题。。。我再研究下。。呵呵~~

循环解决了。。功能问题解决不了了。。呵呵~

TOP

  1. if %now% lss %hang% (goto scan) else (goto end)
  2. :end
复制代码
上面的  else (goto end) 和 end 标号都是多余的

TOP

  1. if %now% lss %hang% (goto scan) else (goto end)
  2. :end
  3. set now=1
  4. goto scan
复制代码
可改为
  1. if %now% geq %hang% (set now=1)
  2. goto scan
复制代码

TOP

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

这样可以了。。呵呵。。。。每读取一行就跳出来。。执行要运行的代码。。。

然后再回去。。。。。

TOP

原帖由 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


恩。。这个不错。。呵呵。。现在改。。谢谢了。。

TOP

返回列表