中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 12:48
48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 字符串替换中的环境变量替换的问题
可打印版本  741 / 7
第1楼 wufengseu 发表于 2008-01-27 15:02
新手上路 发帖 4 积分 10
字符串替换中的环境变量替换的问题
目的:将两个文件夹中的VECTORI中的32 202 16 82分别替换为32 202 30 82和 32 202 40 82

setlocal enabledelayedexpansion

set Line2=32 202 16 82

for %%L in (30, 45) do (

set Line2+=32 202 %%L 82

cd E:\%%L|| echo "PATH IS INCORRECT..."&pause&exit

for /f "delims=" %%i in (VECTORI) do (
set str=%%i
Rem为什么不可以??
set "str=!str:%Line2%=%Line2+%!"
echo !str! >> VECTORI+
)
move VECTORI+ VECTORI
)

特向高手求教!

[ Last edited by wufengseu on 2008-1-28 at 10:44 AM ]
第2楼 fastslz 发表于 2008-01-27 15:44
铂金会员 发帖 2,315 积分 5,493 来自 上海
还不如说明下达到什么目的
第3楼 fastslz 发表于 2008-01-27 15:52
铂金会员 发帖 2,315 积分 5,493 来自 上海
将哪个文件夹里的VECTORI中的32 202 16 82替换成32 202 30 82
将哪个文件夹里的VECTORI中的32 202 16 82替换成32 202 40 82
第4楼 fastslz 发表于 2008-01-27 16:32
铂金会员 发帖 2,315 积分 5,493 来自 上海
按文件夹名称替换规则吧
第5楼 wufengseu 发表于 2008-01-28 10:47
新手上路 发帖 4 积分 10
:)正是你说的意思,你的指导非常有用,十分的感谢!!

set的这个用法好。

我试了你给的代码,最后都只剩一行了,不能达到期望目标;原因如下:

@echo off
setlocal enabledelayedexpansion
set "Line=32 202 16 82"
for %%L in (30,45) do (
for /f "delims=" %%i in (%%L\VECTORI) do (
set "str=%%i"
set "str=!str:%Line%=32 202 %%L 82!"
echo !str!>>%%L\VECTORI+
Rem move out of circle: move %%L\VECTORI+ %%

L\VECTORI

)

move %%L\VECTORI+ %%L\VECTORI
)
pause

不知环境变量能否嵌套使用,例如:
set "Line+=32 202 %%L 82"
set "str=!str:%Line%=%Line+%!"
这样是不行的,有没有其它办法呢?

[ Last edited by wufengseu on 2008-1-28 at 11:42 AM ]
第6楼 fastslz 发表于 2008-01-28 16:11
铂金会员 发帖 2,315 积分 5,493 来自 上海
call标签
下面的代码用dir遍历出VECTORI父目录名,也就是不用for /l 了
第7楼 wufengseu 发表于 2008-02-10 15:29
新手上路 发帖 4 积分 10
感谢fastslz的指导,我再学习学习^_^
第8楼 xiaocai0077 发表于 2008-02-10 16:23
新手上路 发帖 1 积分 2
恩。我也学习了。这里面有些东西我很有启示
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023