|
wufengseu
新手上路

积分 10
发帖 4
注册 2008-1-8
状态 离线
|
『楼 主』:
字符串替换中的环境变量替换的问题 | AI 解释
目的:将两个文件夹中的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 ]
|
|
2008-1-27 15:02 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2008-1-27 15:44 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 3 楼』:
| AI 解释
将哪个文件夹里的VECTORI中的32 202 16 82替换成32 202 30 82
将哪个文件夹里的VECTORI中的32 202 16 82替换成32 202 40 82
|

第一高手 第二高手
我的小站
 |
|
2008-1-27 15:52 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 4 楼』:
| AI 解释
按文件夹名称替换规则吧
@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+
move %%L\VECTORI+ %%L\VECTORI
))
pause
|

第一高手 第二高手
我的小站
 |
|
2008-1-27 16:32 |
|
|
wufengseu
新手上路

积分 10
发帖 4
注册 2008-1-8
状态 离线
|
『第 5 楼』:
| AI 解释
:)正是你说的意思,你的指导非常有用,十分的感谢!!
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 ]
|
|
2008-1-28 10:47 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 6 楼』:
| AI 解释
call标签
下面的代码用dir遍历出VECTORI父目录名,也就是不用for /l 了
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /s/a-d/b VECTORI*') do (
set "str=%%~dpa"
set "str=!str:~0,-1!.t"
for /f "delims=" %%i in ("!str!") do call :xxx "%%~ni"
)
pause
:xxx
if "%~1"=="" goto:eof
set "Line1=32 202 16 82"
set "Line2=32 202 %~1 82"
setlocal enabledelayedexpansion
for /f "delims=" %%i in (%~1\VECTORI) do (
set "str=%%i"
set "str=!str:%Line1%=%Line2%!"
echo.!str!>>"%~1\VECTORI+"
)
move "%~1\VECTORI+" "%~1\VECTORI"
endlocal
goto:eof
|

第一高手 第二高手
我的小站
 |
|
2008-1-28 16:11 |
|
|
wufengseu
新手上路

积分 10
发帖 4
注册 2008-1-8
状态 离线
|
『第 7 楼』:
| AI 解释
感谢fastslz的指导,我再学习学习^_^
|
|
2008-2-10 15:29 |
|
|
xiaocai0077
新手上路

积分 2
发帖 1
注册 2008-1-17
状态 离线
|
『第 8 楼』:
| AI 解释
恩。我也学习了。这里面有些东西我很有启示
|
|
2008-2-10 16:23 |
|