![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 04:33 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]难题,再更新,还继续求助中:如何替换~|为☆ |
| 可打印版本 2,469 / 15 |
| 第1楼 cny798 | 发表于 2010-07-23 01:39 |
| 新手上路 发帖 18 积分 18 | |
|
[求助]难题,再更新,还继续求助中:如何替换~|为☆ 请问,如何用批处理的命令把1.txt里的~|替换为☆?(不能用其它软件)谢谢帮助的朋友(小提醒,1、“~|”两个字符都是特殊转义字符,需要留意;2、要留意换行等格式不能变;3、实际需求中,文件内容大约是下面文件的五万倍以上,每天都需要做此替换工作,所以也请考虑一下程序的运行效率问题,谢谢谢谢。----2010.07.24 15:32)
1.txt的内容 Country~|Case No~|Journal ID~|Case Login Name~|Case Creation Date/Time~|Case Created By Dept~|Journal Creation Date/Time~|Journal Created By Dept~|Journal Login Name~|Log Status~|Service Request No~|Current Status~|Service Code~|Resolution Code~|Component Code~|Cause Code~| Reason Code~|Case Summary~|Service Tag~|LOB~|Item Family~|Customer Code~|Email~|Support 2.txt的内容 Country☆Case No☆Journal ID☆Case Login Name☆Case Creation Date/Time☆Case Created By Dept☆Journal Creation Date/Time☆Journal Created By Dept☆Journal Login Name☆Log Status☆Service Request No☆Current Status☆Service Code☆Resolution Code☆Component Code☆Cause Code☆ Reason Code☆Case Summary☆Service Tag☆LOB☆Item Family☆Customer Code☆Email☆Support 案例: 错误的程序 @echo off setlocal disabledelayedexpansion set oldfile="d:\1.txt" set newfile="d:\2.txt" if exist d:\2.txt del d:\2.txt (for /f "tokens=*" %%a in ('findstr /n .* %oldfile%') do ( set var=%%a setlocal enabledelayedexpansion if "!var:*:=!"=="" (echo;) else ( set var=!var:*:=! echo;!var:^~^|=☆! ) endlocal ))>%newfile% [ Last edited by cny798 on 2010-7-24 at 16:04 ] |
|
| 第2楼 Taurus | 发表于 2010-07-23 03:38 |
| 新手上路 发帖 8 积分 0 | |
|
@echo off
for /f "delims=" %%i in ('more 1.txt') do ( set str=%%i call set str=%%str:^|=☆%% call echo %%str%% ) pause |
|
| 第3楼 cny798 | 发表于 2010-07-23 12:53 |
| 新手上路 发帖 18 积分 18 | |
Originally posted by Taurus at 2010-7-23 03:38: 非常感谢您的回复,但这是错误的,因为~与|都是特殊字符,这样是不行的。 |
|
| 第4楼 WANKOILZ | 发表于 2010-07-23 14:30 |
| 初级用户 发帖 89 积分 198 来自 重庆 | |
|
我来钻个空子先(不要拿鸡蛋砸我啊...):
|
|
| 第5楼 defanive | 发表于 2010-07-23 15:17 |
| 初级用户 发帖 62 积分 111 | |
|
想不出什么办法了,只好枚举字串符
|
|
| 第6楼 cny798 | 发表于 2010-07-23 21:10 |
| 新手上路 发帖 18 积分 18 | |
Originally posted by defanive at 2010-7-23 15:17: |
|
| 第7楼 defanive | 发表于 2010-07-23 21:25 |
| 初级用户 发帖 62 积分 111 | |
|
大可自己改下。。。
我读取只读了第一行,你读多几行就是了。。。 |
|
| 第8楼 netbenton | 发表于 2010-07-24 08:14 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
[ Last edited by netbenton on 2010-7-23 at 23:36 ] |
|
| 第9楼 freeants001 | 发表于 2010-07-24 11:11 |
| 中级用户 发帖 244 积分 330 来自 湖北 | |
|
保存下面代码为doit.bat,命令提示符下输入doit d:\1.txt试试:
[ Last edited by freeants001 on 2010-7-24 at 12:46 ] |
|
| 第10楼 cny798 | 发表于 2010-07-24 14:28 |
| 新手上路 发帖 18 积分 18 | |
Originally posted by netbenton at 2010-7-24 08:14: |
|
| 第11楼 defanive | 发表于 2010-07-24 14:53 |
| 初级用户 发帖 62 积分 111 | |
|
。。。 |
|
| 第12楼 cny798 | 发表于 2010-07-24 15:33 |
| 新手上路 发帖 18 积分 18 | |
Originally posted by freeants001 at 2010-7-24 11:11: |
|
| 第13楼 cny798 | 发表于 2010-07-24 15:40 |
| 新手上路 发帖 18 积分 18 | |
Originally posted by defanive at 2010-7-24 14:53: |
|
| 第14楼 defanive | 发表于 2010-07-24 17:16 |
| 初级用户 发帖 62 积分 111 | |
|
这样你还是用第三方吧。。。
我只想看还有没别的方法。。。 |
|
| 第15楼 netbenton | 发表于 2010-07-24 19:40 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
setlocal disabledelayedexpansion
哦~~这个是从你那里粘贴来的,为什么要disabel呢,难道文本里面不有!号吗? 改成 setlocal enabledelayedexpansion 应该可以了的,可是在速度上来说,你还是用三方吧 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |