@echo off
关闭回显及不显示本行。
setlocal enabledelayedexpansion
启用变量延迟。
>I.txt echo 序号 次数 电话号码
创建文本 I.txt 并输出内容“序号 次数 电话号码”。
sed "s//\n/g" T.txt
提取文本中所有数字,每组数字都独立一行,并忽略所有敏感字符。
findstr ^*$
从 sed 操作的结果集中搜索符合条件的数字,即7位以上的数字。
for /f "delims=" %%i in (
解析 sed 和 findstr 的结果集。
set A=%%i
将解析所获取的值赋值给变量 A 。
if "!A:~0,3!" neq "000"
截取变量 A 的前3个字符,判断其是否为 000 ,否则...
if "!A:~0,2!" neq "10"
截取变量 A 的前2个字符,判断其是否为 10 ,否则...
if "!A:~0,4!" neq "2009"
截取变量 A 的前4个字符,判断其是否为 2009 ,否则...(以上3个 if 的语句为与逻辑。)
if "!A:~0,5!" == "17951" set A=!A:~5!
截取变量 A 的前5个字符,判断其是否为 17951 ,是则截取其第6个字符及其后面所有字符,并赋值给变量 A 。
set /a A_!A!+=1
设置变量集并计数。其中,变量名为: A_!A! : A_ 为前缀, !A! 为后部分,由以上4个 if 语句判断获得。
set
输出所有环境变量。
findstr "^A_"
从环境变量中过滤出变量名字首为 A_ 的所有变量。
for /f "tokens=1,2 delims==_" %%i in (
解析过滤后的环境变量,以 = 和 _ 为区段分隔符。变量名赋值给 %%i ,变量的值赋值给 %%j 。
set B=00000000%%j
将变量 %%j 前加8个0,并赋值给变量 B 。
set C_!B:~-9!:%%i==
设置变量集。每个变量的值均是 = 。变量名是 C_!B:~-9!:%%i ,其中 C_ 为前缀, B:~-9! 为前部,由变量 B 截取最后9个字符获得, : 为中间部分,为下一语句分隔用, %%i 为后部分。
findstr "^C_"
从环境变量中过滤出变量名字首为 C_ 的所有变量。
sort /r
对 findstr 的结果集进行排序, /r 指定反向排序。
for /f "tokens=1,2 delims==_:" %%i in (
解析过滤后的环境变量,以 = 、 _ 和 : 为区段分隔符。变量名前半部分赋值给 %%i ,变量名后半部分赋值给 %%j 。
set /a C+=1
加计数,并将累积值赋值给变量 C 。
call :D %%i
调用标签 :D ,并传递变量 %%i 为第一个参数 %1 。
>>I.txt echo !C! !E! %%j
输出变量 !C! 、!E! 和 %%j 。
if !C! lss 11 (
判断变量 C 是否小于11,是则...
start notepad I.txt
使用记事本程序打开文本 I.txt ,并不等待关闭退出这个程序。
exit
退出本批处理。
set E=%1
将传递的参数 %1 设置为变量 E 。
if "!E:~0,1!" == "0" set E=!E:~1!&goto F
截取变量 E 的第一个字符并判断其是否为0,如果不是,退出标签 :D ;如果是0,则截取第2个字符及后面所有字符,即去掉这个0,并赋值给变量 E 。然后返回标签 :F ,重复这个操作,直到变量 E 的字首没有0为止。
[ Last edited by Hanyeguxing on 2009-9-18 at 08:02 ]