- 帖子
- 24
- 积分
- 26
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2012-3-18
|
回复 34# cjiabing
我将代码修改成这样
@echo off&setlocal enabledelayedexpansion
::把xxx.gs、grads和本批处理都放在同一目录下运行。
::cp.gs是标准,你不能随意修改,特别是d:\2010\1\这个路径。
for /r %%a in (*.ctl) do (
for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"
for /f "tokens=*" %%i in (cp.gs) do (
set "var=%%i"
if "%%i"=="'open D:\2010\1\1.ctl'" set var=!var:\1.ctl=\%%~na.ctl!
if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"
for /d %%l in ("%%~dpa") do set "var=!var:\2010\1\700h_=%%~fl700h_!"
echo;!var!
)>>"%~dp0new_cp.gs"
"D:\Program Files\OpenGrADS\Contents\Cygwin\Versions\2.0.a9.oga.1\i686\grads.exe" -blc "%~dp0new_cp.gs"
del /f "%~dp0new_cp.gs">nul 2>nul
)
pause
由于if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:d:\chenp\cccc.ctl=d:\chenp\%%~na.ctl!出来的结果就是open D:\2010\1\D:\2010\1\1.ctl
最重要的一点就是还是没有改gs 1.ctl没有变为2.ctl 循环没有进行 只是运行了第一次
我将先试了三个ctl 都放到D:\2010\1\下了gs和本批处理在d:\2010\下
不知道这个是怎么回事呢 ? |
|