中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]奇怪了,关于替换文本内容的问题
作者:
标题: [已结]奇怪了,关于替换文本内容的问题 上一主题 | 下一主题
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『楼 主』:  [已结]奇怪了,关于替换文本内容的问题

for /f "tokens=* delims=" %%i in (1.txt) do set n=!%i:ab=12!&&echo !n!>>2.txt
将1.txt中有"ab"的字符替换为"12"然后输出到2.txt中,执行不成功,没搞明白.
昨天这个问题还弄成了,今天大清早过来又冒出来了,奇怪了

[ Last edited by bjsh on 2007-4-24 at 03:22 PM ]

2007-4-25 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

To lililulula:

导致你上面的脚本没有成功的主要原因是没有启用变量延迟。

下面的这个脚本基本可以处理你的问题,但是对于特殊符号的处理可能仍然存在一些问题,而且大写的"AB"也会转化成"12".
@Echo off&Setlocal EnableDelayedExpansion
copy /y nul 2.txt >NUL
for /f "delims=: tokens=1*" %%a in ('findstr/n .* "a.txt"') do (
        if NOT "%%b"=="" (set "str=%%b"
        set str=!str:ab=12!
        echo.!str!>>2.txt) else (echo.>>2.txt)
)
START 2.TXT


   此帖被 +1 点积分     点击查看详情   
评分人:【 lililulula 分数: +1  时间:2007-4-25 04:10


2007-4-25 00:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 3 楼』:  



  Quote:
for /f "tokens=* delims=" %%i in (1.txt) do set n=!%i:ab=12!&&echo !n!>>2.txt

我想这一句set n=!%i:ab=12!你是想写成set n=!%%i:ab=12!的吧;

但是即便这样也是不对的;

首先 使用!!启用变量延迟需要在开头加setlocal enabledelayedexpansion

其次 利用set来替换变量; 其中的set n=!_:ab=12! 标记_处应该为 已定义的环境变量; 而不能用%%i等变量.

   此帖被 +1 点积分     点击查看详情   
评分人:【 lililulula 分数: +1  时间:2007-4-25 04:07


2007-4-25 03:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 4 楼』:  


@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do set "n=%%i"&&set n=!n:ab=12!&&echo !n!>>2.txt


   此帖被 +1 点积分     点击查看详情   
评分人:【 lililulula 分数: +1  时间:2007-4-25 04:11


2007-4-25 03:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 5 楼』:  

多谢几位的帮助,特别是bjsh斑竹,昨天估计也是我没理解的情况下测试成功的,现已经搞明白了.

[ Last edited by lililulula on 2007-4-24 at 03:10 PM ]

2007-4-25 03:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: