楼 主
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
用两个%%报错,一个就可以
论坛跳转: