中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-01 05:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » set不能替换 查看 734 回复 4
楼 主 set不能替换 发表于 2007-10-06 22:22 ·  中国 河南 郑州 电信
初级用户
积分 44
发帖 18
注册 2007-09-20 21:54
18年会员
UID 97915
性别 男
状态 离线
for /f %s in (1.txt) do set a=%s:1=6%


1.txt的内容是12345678
我想把1换成6
可是执行以后1.txt的内容没有发生任何变化
也没有提示错误~~~~


是那里错了呢~~~
2 发表于 2007-10-07 02:47 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
set a=%s:1=6% 这里的s是指的变量,而for里面的是“%s”,而不是s,所以需要先把%s赋值给一个变量str,再来set a=%str:1=6%,如果在for命令里面替换,注意变量延迟。
3 发表于 2007-10-07 18:38 ·  中国 河南 郑州 电信
初级用户
积分 44
发帖 18
注册 2007-09-20 21:54
18年会员
UID 97915
性别 男
状态 离线
麻烦你再看看是这样么?
for /f %s in (1.txt) do echo %s
set ser=%s
set a=%ser:1=6%

还是不行~~~~~
谢谢
4 发表于 2007-10-07 18:45 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
问题是你把替换后的结果写入1.txt了吗?

for /f %%s in (1.txt) do set ser=%%s
echo %ser:1=6%>1.txt
5 发表于 2007-10-07 20:58 ·  中国 河南 郑州 电信
初级用户
积分 44
发帖 18
注册 2007-09-20 21:54
18年会员
UID 97915
性别 男
状态 离线
我用版主的办法试了,已经好了~~~太感谢了
for /f "delims=" %s in (1.txt) do set ser=%s
echo %ser:2=6%>1.txt
用两个%%报错,一个就可以
论坛跳转: