标题: [文本处理] 中英文标点转换的批处理感叹号无法替换成功? [打印本页]
作者: abxialiang 时间: 2010-4-19 21:05 标题: 中英文标点转换的批处理感叹号无法替换成功?
一些脚本运行的时候经常由于标点不是英文的出错,所以写了这个,但是!不能替换成功。- @echo off
- for /f "tokens=* delims=" %%i in ('type %1 ^|more') do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set str=!str:。=.!
- set str=!str:,=,!
- set str=!str:;=;!
- set str=!str:、=\!
- set str=!str:(=^(!
- set str=!str:)=^)!
- set str=!str:”="!
- set str=!str:“="!
- set str=!str:!=!! &&rem 这一行的符号替换不成功,有什么办法啊。
- echo !str!
- endlocal
- )
- pause
复制代码
有相关的小工具也可以,word那么大的就不要了。
作者: x9tiancmd 时间: 2010-4-19 21:16
回楼主, 这个我也很想知道 , 除了 ! 还有 %
也不能成功替换 不知道哪位兄台有好的方法
另, 问下楼上兄台, type %1 应当就行了, 为什么还要 more 一下呢? 难道文件长了for 吃不消???
[ 本帖最后由 x9tiancmd 于 2010-4-19 21:18 编辑 ]
作者: GNU 时间: 2010-4-19 22:11
- sed -i "s/。/\./g;s/,/,/g;s/;/;/g;s/、/\\/g;s/(/\(/g;s/)/\)/g;s/”/\"/g;s/“/\"/g;s/!/!/g" test.bat
复制代码
作者: abxialiang 时间: 2010-4-20 07:29
sed是三方工具,可移植性不高啊
另外,加一个more靠行住些,已经习惯了。
作者: GNU 时间: 2010-4-20 10:51 标题: 回复 4楼 的帖子
“有相关的小工具也可以”不是你说的嘛?
作者: abxialiang 时间: 2010-4-20 12:36
呃。。。话是这样说,但是这也是一个很好的知识点,再说有关的小工具还没找到呢
作者: abxialiang 时间: 2010-4-20 12:38
强大的版主啊,降临吧。。。。
作者: qzwqzw 时间: 2010-4-20 19:26
把setlocal的变量延迟扩展形式
改成call的变量二次扩展形式吧
作者: GNU 时间: 2010-4-20 20:35 标题: 回复 6楼 的帖子
sed.exe在你看来不算小工具吗?你心目中的小工具是怎样定义的?
作者: 随风 时间: 2010-4-20 21:36
特殊字符需转义 ! 用 ^ 转义,% 用 % 转义- @echo off
- for /f "delims=" %%a in (a.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- set str=!str:!=^!!
- set str=!str:%=%%!
- echo !str!
- endlocal
- )
- pause
复制代码
[ 本帖最后由 随风 于 2010-4-20 21:38 编辑 ]
作者: abxialiang 时间: 2010-4-23 13:15
非常感谢版主,%号的问题是解决了,但是“!”的问题还是不行,不知是否是我的系统问题。会出现丢失的结果。
我用的测试文本如下:
K:::“”‘’||///??
—……%¥#··!!#·..**++-*/
()
()
。。,《“、|[]{}
!!*!!!!
%%%%%%%%%
回9楼的朋友,sed.exe确实是小工具,但是我这里面用不了,没反应啊。
作者: GNU 时间: 2010-4-23 13:26 标题: 回复 11楼 的帖子
什么系统?哪个版本的sed?
作者: yaozidm124 时间: 2010-12-10 17:16 标题: 回复 10楼 的帖子
感叹号不能替换成功
感叹号不能替换成功
感叹号不能替换成功
作者: wc726842270 时间: 2010-12-11 23:30 标题: 回复 4楼 的帖子
SED在文本处理的方面可以说是相当的强大了,如果有时间,我看你还是看看吧,反正我是觉的非常之有用。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |