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

DOS/BAT
Ver、Vol、Ctty命令的使用教程
Setver、Share、Subst命令的使用方法
Expand、Fasthelp、Fc命令的用法
Time、Set、Smartdrv命令的使用方法
Doskey命令的使用方法
dos常用命令列表与使用说明
在DOS下使用长文件名的方法
DOS下内存的配置方法
DOS未公开命令与参数列表
研究下DOS下联网的方法
DOS下网络浏览器的使用方法
IF-ERRORLEVEL使用方法
dos之bat批处理文件语法介绍
写的不错批处理教程一
DOS批处理脚本语言简介与详细说明
一键清除_desktop.ini文件的批处理文件
安全清除你C盘垃圾 让你多出近2G的空间
关于制作一个通用的DOS批处理段注释命令的思路介绍
在批处理文件或配置文件中加入注释
MS-DOS 7.10完整安装版(含图文安装程序)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 228 ::
收藏到网摘: 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