[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 21# terse


    您好 我运行您给的代码后 没有出图 也没有出现新的gs

TOP

回复 28# cjiabing


    cjiabing :不好意思 又打扰你了
我在运行你的代码时出现不能循环的问题,运行了第一个grads -blc "%~dp1new_cp.gs"
后就完全停止了,这是为什么呢?

TOP

回复 22# cjiabing


    我发现一个问题 我早上再单位的电脑运行代码的时候是可以该ctl名字 并且是能够循环的,但是
不能运行grads这句说是找不到可行文件,可是到了晚上我在自己的笔记本电脑上运行的时候,grads这
句能够运行,但是循环只有一次。不知道这个怎么解释呢。

TOP

回复 33# cpp


    不好意思,修正了一下,没有东西测试容易产生错误!~
  1. @echo off&setlocal enabledelayedexpansion
  2. ::把xxx.gs、grads和本批处理都放在同一目录下运行。
  3. ::xxx.gs是标准,你不能随意修改,特别是d:\chenp这个路径。
  4. for /r %%a in (*.ctl) do (
  5.     for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"
  6.     for /f "tokens=*" %%i in (xxx.gs) do (
  7.         set "var=%%i"
  8.         if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:d:\chenp\cccc.ctl=d:\chenp\%%~na.ctl!
  9.         if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"
  10.         for /d  %%l in ("%%~dpa") do  set "var=!var:d:\chenp\700h_=%%~fl700h_!"
  11.         echo;!var!
  12.     )>>"%~dp0new_xxx.gs"
  13.     grads -blc "%~dp0new_xxx.gs"
  14.     del /f "%~dp0new_xxx.gs">nul 2>nul
  15. )
  16. pause
复制代码

强调一下:你要把所有文件盒程序都放在同一目录下使用。同时,修改xxx.gs文件需要修改本代码。
有两个地方可能出点问题了:一个是替换文件名cccc.ctl的,一个是%~dp0new_xxx.gs的,现在一同修改过来了,你使用这个就可以了。
如果你的grads放在其他地方,你可以用路径来表示它,比如:"D:\Program Files\GRADS\grads.exe"——路径有空格需要使用双引号。
还有其他问题请一并反馈到一楼。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 30# terse


    呵呵,所以,我在代码后面提示了,基本上是投机取巧的,如果实际情况不一样还得修改。那段代码确实有点问题,我以修正过来了。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 31# cpp
假设总文件夹在 D:\123\   (执行时自行修改)
另grads 程序不在D:\123\ 下  那么应该给出路径
前面代码 一并修改
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ph=d:\123\"
  3. cd /d "%ph%"
  4. for /f "tokens=*" %%i in ('dir /s /b /a-d "%ph%*.ctl"') do (
  5.     for /f "usebackq tokens=1,2" %%j in ("%%~i") do if /i "%%j"=="tdef" set "N=%%k"
  6.     (for /f "usebackq tokens=*" %%j in ("cp.gs") do (
  7.         set "Str=%%j"
  8.         if "%%~xj" neq ".ctl'" (
  9.            if "!str:~,9!" neq "while(i<=" (
  10.               if "!str:~,9!" equ "'printim " (echo 'printim %%~dpi%%~nxj)else echo %%j
  11.            ) else echo while^(i^<=!N!^)
  12.         ) else echo 'open %%i'
  13.     ))>"~temp.mp"
  14.     move "~temp.mp" "%ph%cp.gs"
  15.     grads -blc "%ph%cp.gs"
  16. )
  17. pause
复制代码

TOP

回复 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\下
不知道这个是怎么回事呢 ?

TOP

回复 37# cpp


    如果你在Q群里你加我吧,这里说不清楚了~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 36# terse


    您好 你的代码我按照您说的要求改了后 还是没有进行循环,只是第一次出图了 后面没有出图 为什么呢?set "ph=d:\2010\"
只改了这个路劲以及grads的路径

TOP

回复 38# cjiabing


    给我你的QQ号 我加你

TOP

回复 38# cjiabing


    私下里给吧 发个私信什么的

TOP

本帖最后由 terse 于 2012-3-21 15:13 编辑

回复 39# cpp
不确定你那边情况
我这里测试了一下 循环50 主文件夹下CP.GS内容 更改50次
也没办法获得你那边更多详情 我给出测试前后文件对比 你看下  是否有文件路径问题或其他问题
  1. 'reinit'
  2. 'open d:\123\hcflmup9\cflm.ctl'
  3. 'set parea 1 10 1 7.5'
  4. 'set xlopts 1 4 0.1'
  5. 'set ylopts 1 4 0.1'
  6. i=1
  7. while(i<=5)
  8. 'printim d:\123\hcflmup9\700h_'time'.png white'
复制代码
运行一次后 修改如下 循环下去  每次修改的
'reinit'
'open d:\123\76lk9bi0\6lk9.ctl'
'set parea 1 10 1 7.5'
'set xlopts 1 4 0.1'
'set ylopts 1 4 0.1'
i=1
while(i<=6)
'printim d:\123\76lk9bi0\700h_'time'.png white'
1

评分人数

    • cpp: 多谢技术 + 1

TOP

返回列表