三、findstr 篇
我最钟爱的命令,可惜外部命令的启动速度太慢,所以实际运用时较少露面。
findstr /s /m .* *.*
::其实findstr也是一个dir,虽然比dir慢些,却多了查找文件内容的功能
复制代码
findstr /n .* 1.txt|findstr "^5000:"
::非常实用的取指定行的方法,配合正则可以取指定范围之内的行
复制代码
set /p n=请输入数字或大小写字母
(echo !n!)|findstr /i "[0-9a-Z]"&&echo 输入有误!
::这个够实用吧?不解释
复制代码
dir|findstr ['-Z]
::利用findstr和if命令中字符的实际大小顺序实现查找含有宽字符的行
复制代码
findstr /x ".........." 1.txt
::查找1.txt中10字节的行
复制代码
(type 1.txt&echo;)|findstr /o .*|more +1
::加上for,很容易获取1.txt每行的字节数
复制代码
findstr>1.txt /m /p .* *.*
dir /b /a-d|findstr>2.txt /v /i /m /g:1.txt
::获取含有不可打印字符的文件名,关键是findstr取集
复制代码
findstr "^Rar!" /g:1.txt
::此处1.txt是上个技巧的1.txt,内容是所有含不可打印字符的文件列表,此技巧可搜索rar文件,虽然简
单,但是至今也未出错过。
复制代码
more>tmp +2 1.txt
findstr>前两行.txt /x /v /g:1.txt 2.txt
::有时候可用此办法获取前几行,当然,绝大部分情况下没有for /f合适,而且存在特殊字符bug[/code
[code]]
@echo off
findstr /n .* 1.txt>tmp1
find /n /v "" 2.txt|more>tmp2 +2
for /f "tokens=2*delims=]:" %%a in ('fc /n /lb10000 tmp1 tmp2^|sort') do (
echo;%%b
)
del tmp?
pause
::qzwqzw首创用fc /n同时输出双文本的思路,但是存在排序有可能被打乱的缺陷,所以加了个find弥补一 下