引子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off & setlocal EnableDelayedExpansion

set j=0

for /f "delims=""" %%i in (整理好的ip.txt) do ( rem 循环遍历每一行

set /a j+=1

set con!j!=%%i rem 使用了EnableDelayedExpansion,将支持“!”的延迟符

call set a=%%con!j!%%

set a=!a:.0.0=.0.0 !

echo !a!>>最终可用ip.txt

)

del 整理好的ip.txt

pause

以上是我写的将“纯真ip扫描”扫出来格式乱的ip重新格式化的一段bat,由上解读:

  1. @echo off & setlocal EnableDelayedExpansion
    @echo off表示bat开头,&表与,setlocal EnableDelayedExpansion表示允许!符号的使用(一般可用于for循环内部)

  2. for /f "delims=""" %%i in (整理好的ip.txt) do (
    for /f 的基本用法提取文本信息,delims=”””表示命令要用什么作为分隔符,%%i表示保存到i变量中

  3. /a
    是指定一个变量等于一串运算字符,上面也就是指定j变量=j+1这个运算式

  4. set con!j!=%%i
    循环设置con1、con2……,并将i的值赋给它(!j!表示j这个变量)。

  5. call set a=%%con!j!%%
    call表示启动延迟变量,它也可以写成set a=!con!j!!

  6. set a=!a:.0.0=.0.0
    !表示将a变量中的“.0.0”字符串替换为“.0.0 ”,并重新赋值给a

  7. echo !a!>>最终可用ip.txt
    将a变量追加写入文本(>表示覆盖写入)

  8. del 整理好的ip.txt
    删除原文本文件