[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 关于提取文件中敏感字符的问题

经过namejm提醒,现在把问题以帖子形式列出:

namejm你好,我在看你的以前写的代码,是关于提取文本中带敏感字符的行。你当时的代码为:
  1. @echo off
  2. :: 不能正确提取带感叹号的内容
  3. :: code by jm 2006-12-11 CMD@XP
  4. set num=0
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%i in ('findstr /n .* test.txt') do (
  7.     set /a num+=1
  8.     set "str=%%i"
  9.     echo 第 !num! 行: !str:*:=!
  10. )
  11. pause
  12. goto :eof
复制代码
不是很明白,此句  echo 第 !num! 行: !str:*:=!
是把所有:之前的(包括:)字符全部清空?可是没有提到关于敏感字符的问题啊。

我自己在运行时用此句  findstr /n /i "[&:^';,.#$^!^@^^%%^|^|]" tt.txt
可以输出含有字符一些特殊字符的行,但是双引号"却不能行。

希望namejm抽点时间来指点一下。
谢谢

  1. @echo off
  2. echo ^">test.x
  3. echo "test">>test.x
  4. findstr /n "^\"$" "test.x"
  5. pause>nul
复制代码
查找双引号要用\"

[ 本帖最后由 pusofalse 于 2008-11-15 03:45 编辑 ]
心绪平和,眼藏静谧。

TOP

谢谢pusofalse版主,我运行过了,可以。只是还有个疑问:
"^\"$"是指行的开始和结尾之间只有一个"吧,也就是这一行只是一个"吧??

TOP

回复 3楼 的帖子

是这样的。^$分别代表行首和行尾。
test.x中的内容是
"
"test"
findstr "^\"$" 只匹配第一行的"
心绪平和,眼藏静谧。

TOP

返回列表