中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 03:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教让修改&的方法(已解决) 查看 929 回复 6
楼 主 请教让修改&的方法(已解决) 发表于 2008-03-26 07:20 ·  中国 广东 茂名 电信
中级用户
★★
积分 396
发帖 183
注册 2007-12-23 06:24
18年会员
UID 106531
性别 男
状态 离线
a.txt内容如下:
ppp&abcd &a&8500

批处理脚本如下:
for /f "tokens=*" %%i in ('type a.txt') do (
set var=%%i
set var=%var:^&=^^&%
)
echo %var%
pause


执行结果为:
'ppp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'abcd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
.......

我想实现的目的是:把&符号前自动加上^符号,因为a.txt文本中的内容是随机的,如果是固定的我手动改就行了。

[ Last edited by jiulong on 2008-4-15 at 08:29 AM ]
2 发表于 2008-03-26 16:41 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
...
set var="%%i“
set var=!var:&=^&!
set var=!var:"=!
...

试试这样吧。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2008-03-26 16:47 ·  中国 广东 茂名 化州市 电信
中级用户
★★
积分 396
发帖 183
注册 2007-12-23 06:24
18年会员
UID 106531
性别 男
状态 离线
'&!' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
!var:"=!


不行啊
4 发表于 2008-03-26 17:13 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
注意启用延迟环境变量扩展:
setlocal enabledelayedexpansion

[ Last edited by Climbing on 2008-3-26 at 05:20 PM ]
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
5 发表于 2008-03-26 17:19 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
完整的批处理应该类似这样:

@echo off & setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (a.txt) do (
set var="%%i"
set var=!var:&=^&!
set var=!var:"=!
echo "!var!"
)
echo "%var%"
pause


我没有试批处理,只是在命令行下简单试了一下。cmd的功能太差,特殊字符不好处理。例如在for /f中,你永远无法实现用"(半角双引号)作为分隔符。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2008-04-10 07:44 ·  中国 广东 茂名 化州市 电信
中级用户
★★
积分 396
发帖 183
注册 2007-12-23 06:24
18年会员
UID 106531
性别 男
状态 离线
'&' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
"var:"
"var:"
还是不行类。
7 发表于 2008-04-13 07:01 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
试试下面这个?
@Echo off & SetLocal EnableDelayedExpansion

for /f "delims=" %%a in (a.txt) do (
set "str=%%a"
set "str=!str:&=^&!"
echo.!str!
)

goto:EOF
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
jiulong +4 2008-04-15 08:30
论坛跳转: