中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-05 04:34
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何替换文本中的字符呢?包含特殊字符! 查看 1,269 回复 9
楼 主 [求助]如何替换文本中的字符呢?包含特殊字符! 发表于 2007-06-29 13:47 ·  中国 福建 泉州 电信
中级用户
★★
积分 360
发帖 120
注册 2005-07-14 20:39
21年会员
UID 40722
状态 离线
我想实现的是这样的,在不使用外部命令的情况下
首先从 c:\aa.txt 中读取第一行的内容给变量 %aaa% (这个变量的内容可能包含所有未知的特殊字符如: . , / \ ] [ < > ! @ # $ % ^ ^ & * ( ) 等未知的assic字符) 然后将 c:\bb.txt 中包含的 %aaa% 变量的内容替换为 abcdef 如果不包含特殊字符我会写,但是包含了特殊字符就不知道怎么写了,希望大家帮忙,
2 发表于 2007-06-29 14:13 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
论坛里有类似的吧。

具体问题具体分析。

能把aa和bb中内容帖上来吗?
3 发表于 2007-06-29 14:18 ·  中国 福建 泉州 电信
中级用户
★★
积分 360
发帖 120
注册 2005-07-14 20:39
21年会员
UID 40722
状态 离线
由于 bb.txt 中 已经包含了 aa.txt 中的第一行,但是 aa.txt 的第一行是不固定的,动态的。
4 发表于 2007-06-29 14:33 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
似乎和特殊字符没什么关系吧?似乎特殊字符中不包含=就行了。
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do set aaa=%%i
for /f "delims=" %%i in (b.txt) do (
set bbb=%%i
if !bbb!==!aaa! set bbb=abcdef
echo !bbb!>>c.txt
)


是不是这个意思啦?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
maxfull +4 2007-06-29 16:23
5 发表于 2007-06-29 15:20 ·  中国 福建 泉州 电信
中级用户
★★
积分 360
发帖 120
注册 2005-07-14 20:39
21年会员
UID 40722
状态 离线
请问下 setlocal enabledelayedexpansion
这个是什么意思呢
6 发表于 2007-06-29 15:22 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
啊?这是启用延迟啊

在cmd里输入
setlocal /?
有详细点的说明。更详细的解释请到论坛里搜索。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
maxfull +4 2007-06-29 16:23
7 发表于 2007-06-29 15:24 ·  中国 福建 泉州 电信
中级用户
★★
积分 360
发帖 120
注册 2005-07-14 20:39
21年会员
UID 40722
状态 离线
刚刚测试了下可以。。
如果我想要在 变量 aaa中在前面加入 <abc>可以实现吗?加入后再替换
8 发表于 2007-06-29 15:27 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
可以啊,只是都是整句替换的。加不加有什么区别吗?
9 发表于 2007-06-29 15:42 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
//似乎和特殊字符没什么关系吧?似乎特殊字符中不包含=就行了。

把==改为equ能否解决等号的问题呢?
10 发表于 2007-06-29 15:52 ·  中国 天津 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
不完全是这个的问题。用set的时候=号有特殊意义
论坛跳转: