![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 02:42 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 最大限度替换掉文本里的特殊字符 |
| 可打印版本 758 / 10 |
| 第1楼 plp626 | 发表于 2008-04-14 13:09 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
最大限度替换掉文本里的特殊字符 test.txt里同时有---与//
我就光替换掉下-/这两个字符都出错,不知为什么? ----------------------------- 像控制字符<>&^%!/~'" 其他特殊字符-*\.,:这些都统统替换为指定的字符,大家讨论讨论 |
|
| 第2楼 slore | 发表于 2008-04-14 13:18 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
你什么错误都不说?
@echo off for /f "delims=" %%a in (test.txt)do ( call :ti "%%a" ) pause goto:eof :ti set s=%~1 set s=%s:-=% set s=%s:/=% echo %s%>>2.txt |
|
| 第3楼 plp626 | 发表于 2008-04-14 13:20 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
这个是"最大限度原样输出含特殊字符的指定行内容"代码,我做少量改动:
有缺陷,不能完全... @echo off cd.>output.txt for /f "eol= delims=" %%i in ('more test.txt') do ( set "str=%%i" call set "str=%%str:*:=%%" if defined str (call :output) else echo.>>output.txt ) start output.txt exit :output set "str=%str:^=^^%" set "str=%str:"=%" set "str=%str:>=^>%" set "str=%str:<=^<%" set "str=%str:&=^&%" set "str=%str:|=^|%" set "str=%str:="%" (call echo.%%str%%)>>output.txt goto :eof |
|
| 第4楼 slore | 发表于 2008-04-14 13:21 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
没有你的TEST……不清楚。
可能我写的TEST太简单了吧。。。 字符处理建议用VBS……通杀……只是个建议。。。 |
|
| 第5楼 zh159 | 发表于 2008-04-14 13:24 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
特殊字符处理还是尽量少用BAT吧
|
|
| 第6楼 plp626 | 发表于 2008-04-14 13:39 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
VBS 不会,现在只是在论坛里把现有的VBS代码当作范例,照猫画虎,一点都不系统,什么数组定义都不会,现在还没找到合适的教程。
我就随便那个test.txt大家测试下: |
|
| 第7楼 plp626 | 发表于 2008-04-14 13:45 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
用我一楼的代码:
怎么得到的2.txt竟然内容为: 十分不解 |
|
| 第8楼 slore | 发表于 2008-04-14 13:46 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
@echo off
for /f "delims=" %%a in (test.txt)do ( call :ti "%%a" ) pause goto:eof :ti set s=%~1 set s=%s:/=% set s=%s:-=% if Not "%s%"=="" echo %s%>>2.txt |
|
| 第9楼 plp626 | 发表于 2008-04-14 13:55 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
slore的代码成功了,关键在
set s=%s:/=% set s=%s:-=% 替换/的语句要放在-前面,why? 这是不是bug? |
|
| 第10楼 slore | 发表于 2008-04-14 19:07 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
@echo off
set slore= set slore1=s-l-o-r-e set slore2=s/l/o/r/e echo %slore:/=% echo %slore1:/=% echo %slore2:/=% echo %slore:-=% echo %slore1:-=% echo %slore2:-=% pause>nul
[ Last edited by slore on 2008-4-14 at 08:01 PM ] |
|
| 第11楼 plp626 | 发表于 2008-04-14 19:52 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
谢谢slore的代码,理解了
请大家记住: 空字符串再次替换将非空 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |