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

[数值计算] 批处理如何批量转换IP为整数

我写的代码是这样的
  1. @echo off
  2. for /f "delims=. tokens=1-4" %%a in (001.txt) do set /a result=%%a*256*256*256+%%b*256*256+%%c*256+%%d&echo %result% >>002.txt
  3. pause
复制代码

结果是 ECHO 处于关闭状态
001.txt内容是这样的
  1. 192.168.10.1
  2. 192.168.10.2
  3. 192.168.10.3
  4. 192.168.10.4
  5. 192.168.10.5
  6. 192.168.10.6
  7. 192.168.10.7
  8. 192.168.10.8
  9. 192.168.10.9
复制代码

不能去掉的,那是分隔符

TOP

回复 6楼 的帖子

感谢Batcher老大,那个 delims=   后边的空格是不是应该去掉?
去掉后这个情况又这么处理?看图:

TOP

%%a*256*256*256超出了批处理可以直接进行计算的范围,需要采用间接地方法,参考:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-8,* delims=        . " %%a in ('type ip.txt') do (
  3. Call :GetDIP %%a %%b %%c %%d one
  4. Call :GetDIP %%e %%f %%g %%h tow
  5. if "!one:~4,1!"=="" set/p "=  "<nul
  6. echo  !one!              !tow!         %%i
  7. )
  8. pause
  9. goto :eof
  10. :GetDIP
  11. set /a sur=%2*256*256+%3*256+%4
  12. if %1 gtr 127 (
  13.         set /a "sur=(%1-128)*256*256*256+!sur!"
  14.         set suw=000000000!sur:~-9!
  15.         set /a suw=1!suw:~-9!-1000000000+147483648
  16.         set /a sut=!sur:~0,-9!+!suw:~0,-9!+2
  17.         set "sur=!sut!!suw:~-9!"
  18. ) else (
  19.         set /a sur=%1*256*256*256+!sur!
  20. )
  21. set "%5=!sur!"
  22. goto :eof
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4楼 的帖子

恩,谢谢asnahu  这个在网页中我会用,现在想用bat实现

TOP

这里有个脚本,仅供参考:

http://www.3gcomet.com/article.asp?id=150

TOP

回复 2楼 的帖子

IP化整数这个在网页中用的多……,批处理肯定是能做到,只是我还没想出来^

TOP

没用过这种功能~~

[ 本帖最后由 asnahu 于 2009-9-29 10:40 编辑 ]

TOP

返回列表