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

[文本处理] 中英文标点转换的批处理感叹号无法替换成功?

一些脚本运行的时候经常由于标点不是英文的出错,所以写了这个,但是!不能替换成功。
  1. @echo off
  2. for /f "tokens=* delims=" %%i in ('type %1 ^|more') do (
  3. set "str=%%i"
  4. setlocal enabledelayedexpansion
  5. set str=!str:。=.!
  6. set str=!str:,=,!
  7. set str=!str:;=;!
  8. set str=!str:、=\!
  9. set str=!str:(=^(!
  10. set str=!str:)=^)!
  11. set str=!str:”="!
  12. set str=!str:“="!
  13. set str=!str:!=!!      &&rem 这一行的符号替换不成功,有什么办法啊。
  14. echo !str!
  15. endlocal
  16. )
  17. pause
复制代码
有相关的小工具也可以,word那么大的就不要了。

回复 4楼 的帖子

SED在文本处理的方面可以说是相当的强大了,如果有时间,我看你还是看看吧,反正我是觉的非常之有用。

TOP

回复 10楼 的帖子

感叹号不能替换成功
感叹号不能替换成功
感叹号不能替换成功

TOP

回复 11楼 的帖子

什么系统?哪个版本的sed?

TOP

非常感谢版主,%号的问题是解决了,但是“!”的问题还是不行,不知是否是我的系统问题。会出现丢失的结果。
我用的测试文本如下:
K:::“”‘’||///??
—……%¥#··!!#·..**++-*/
()
()
。。,《“、|[]{}
!!*!!!!
%%%%%%%%%

回9楼的朋友,sed.exe确实是小工具,但是我这里面用不了,没反应啊。

TOP

特殊字符需转义 ! 用 ^ 转义,% 用 % 转义
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.    set "str=%%a"
  4.    setlocal enabledelayedexpansion
  5.    set str=!str:!=^!!
  6.    set str=!str:%=%%!
  7.    echo !str!
  8.    endlocal
  9. )
  10. pause
复制代码

[ 本帖最后由 随风 于 2010-4-20 21:38 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 6楼 的帖子

sed.exe在你看来不算小工具吗?你心目中的小工具是怎样定义的?

TOP

把setlocal的变量延迟扩展形式
改成call的变量二次扩展形式吧
天的白色影子

TOP

强大的版主啊,降临吧。。。。

TOP

呃。。。话是这样说,但是这也是一个很好的知识点,再说有关的小工具还没找到呢

TOP

回复 4楼 的帖子

“有相关的小工具也可以”不是你说的嘛?

TOP

sed是三方工具,可移植性不高啊
另外,加一个more靠行住些,已经习惯了。

TOP

  1. sed -i "s/。/\./g;s/,/,/g;s/;/;/g;s/、/\\/g;s/(/\(/g;s/)/\)/g;s/”/\"/g;s/“/\"/g;s/!/!/g" test.bat
复制代码

TOP

回楼主, 这个我也很想知道 , 除了 !   还有 %

  也不能成功替换  不知道哪位兄台有好的方法


   另, 问下楼上兄台,  type %1   应当就行了,   为什么还要 more  一下呢?  难道文件长了for 吃不消???

[ 本帖最后由 x9tiancmd 于 2010-4-19 21:18 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

返回列表