当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 读取带敏感字符的行的批处理

DOS/BAT
为cmd设置密码的批处理
把下一行的数字复制到前面一行的后面,并用空格分开的批处理
批处理 保留空行替换字符串
批处理 文件归类整理器
批处理 文件归类整理器(当面目录)
批处理 删除重复行的代码
批处理 字符串去空格实现代码[不同部位]
去掉字符串头所有的0的批处理
反序列出文本的每行内容的批处理
反序显示输入内容批处理
把多行文本拼接成用;连接的一行的批处理
把某个目录下所有txt中第三行第四个数字相加
把首行和尾行互换的批处理
拼接相临的奇偶行文本内容
把两个文件中的不同之处提取到某个文件中去
显示只有指定个数字符的行
显示某两个字符及之间的字符
显示随机的5个数
查找偶数行内容的批处理
查找行中的第一个数据串

DOS/BAT 中的 读取带敏感字符的行的批处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 227 ::
收藏到网摘: n/a

复制代码 代码如下:

@echo off
:: 普通的 for+findstr 语句会忽略分号开头的行
:: findstr /n .* 用delims=:后,会忽略行首所有的冒号
:: 还有!、&、.等特殊符号需要处理
:: 以下代码可以准确提取这些敏感字符
:: 解决了 setlocal 最大递归层的问题(setlocal 两两嵌套处理超过15行内容时会带来此问题)
:: 能计算空行
:: code by jm 2006-12-12 thanks 3742668 CMD@XP
set num=0
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
set /a num+=1
set "str=%%i"
setlocal enabledelayedexpansion
echo 第 !num! 行: !str:*:=!
endlocal
)
pause
goto :eof
@echo off
:: 超过15行内容时,会带来 setlocal 最大递归层的问题
:: code by 3742668 2006-12-11 CMD@XP
@echo off
setlocal enabledelayedexpansion
set num=
for /f "eol= delims=" %%i in ('findstr .* a.txt') do (
setlocal DISABLEDELAYEDEXPANSION
set "tmpstr=%%i"
setlocal enabledelayedexpansion
set /a num += 1
set "!num!=!tmpstr!"
)
for /l %%i in (1,1,%num%) do echo 第%%i行: !%%i!
pause
exit /b 0
@echo off
:: 不能正确提取带感叹号的内容
:: code by jm 2006-12-11 CMD@XP
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
set /a num+=1
set "str=%%i"
echo 第 !num! 行: !str:*:=!
)
pause
goto :eof
@echo off
:: 结果要用引号括起来
:: code by jm 2006-12-11 CMD@XP
set num=0
::setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
set /a num+=1
set "str=%%i"
call :display
)
pause
goto :eof
:display
echo 第 %num% 行: "%str:*:=%"
goto :eof
test.txt的内容
:abc
::xy
;;;ef &
;:;
::;;
&
^
!<
!
%
"
""
'
test
abc