[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
楼主最好把一楼的内容排版好了再说,否则看着别扭不明就里。注意分行、序号整理好。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

1:将gs中的'open d:\chenp\cccc.ctl'的cccc.ctl名字改为每个文件夹下的xxxx.ctl的名字;
——————你上面有说都有一个名字为xxxx.ctl的文件,现在又说改名字,名字都一样改什么?

3:将'printim d:\chenp\700h_'time'.png  white'中的路径改为子文件夹的文件名
——————改为子文件夹的文件名比如改成:新建文件夹\700h_'time'.png?????

4:上述改完保存改好的xxx.gs后再运行总文件夹下的这个gs,用以下语句:grads -blc "d:\总文件夹\xxx.gs"
——————这个你自己会吧????

以上为一个循环的内容,一共循环50次,注意:每个子文件夹的文件名及其里面的ctl的文件名都不一样。
——————原来是不一样!~只有一个????
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.ctl) do (
  3.     for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"
  4.     for /f "tokens=*" %%i in (xxx.gs) do (
  5.         set "var=%%i"
  6.         if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:\cccc.ctl=\%%~na.ctl!
  7.         if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"
  8.         for /d  %%l in (*) do set var=!var:d:\chenp\700h_=%%~nl\700h_!
  9.         echo;!var!
  10.     )
  11. )&echo;&echo;
  12. pause
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 9# cpp


   
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.ctl) do (
  3. for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"
  4. for /f "tokens=*" %%i in (xxx.gs) do (
  5. set "var=%%i"
  6. if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:\cccc.ctl=\%%~na.ctl!
  7. if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"
  8. for /d %%l in ("%%~dpa") do set "var=!var:d:\chenp\700h_=%%~fl700h_!"
  9. echo;!var!
  10. )>>new_xxx.gs
  11. pause
  12. echo grads -blc "%~dp1new_xxx.gs"
  13. del /f new_xxx.gs>nul 2>nul
  14. )
  15. pause
复制代码

注意:
1、第一个pause是为了你检查内容修改是否正确,使用时去掉即可。
2、把 echo grads -blc "%~dp1new_xxx.gs" 中的 echo 去掉就可以执行你的grads了。
3、只针对你提问的进行修改,使用时需要根据实际情况修改替换的值以及路径。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.ctl) do (
  3.     for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"
  4.     for /f "tokens=*" %%i in (xxx.gs) do (
  5.         set "var=%%i"
  6.         if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:\cccc.ctl=\%%~na.ctl!
  7.         if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"
  8.         for /d  %%l in ("%%~dpa") do  set "var=!var:d:\chenp\700h_=%%~fl700h_!"
  9.         echo;!var!
  10.     )>>new_xxx.gs
  11. pause
  12.     echo grads -blc "%~dp1new_xxx.gs"
  13.     del /f new_xxx.gs>nul 2>nul
  14. )
  15. pause
复制代码
说明:
1、你的意思是根据条件修改gs文件,害我想了许久。
2、第一个pause用来检查替换结果,你使用时去掉即可。
3、把 echo grads -blc "%~dp1new_xxx.gs" 前面的 echo 删掉即可运行。
4、有些目录和替换内容可能需要修改,请按实际情况修改。
2

评分人数

    • cpp: 乐于助人技术 + 1
    • CrLf: 乐于助人技术 + 1
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 16# cpp


    三月学习雷锋月,艰苦奋斗,助人为乐,无私奉献!~不必客气!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 26# cpp


    我给你解释下:
@echo off&setlocal enabledelayedexpansion
for /r %%a in (*.ctl) do (——这个是搜索当前目录下所有格式为ctl的文件,刚好你说有五十个文件夹那就是搜索到五十个文件了,刚好也就循环了五十次了。谁知道你还有那么多ctl文件!
    for /f "usebackq tokens=1,2" %%x in ("%%~a") do if /i "%%x"=="tdef" set "str=%%y"——这句是获得tdef的。
    for /f "tokens=*" %%i in (xxx.gs) do (——这个是读取gs文件内容的,我认为只有一个xxx.gs。
        set "var=%%i"
        if "%%i"=="'open d:\chenp\cccc.ctl'" set var=!var:\cccc.ctl=\%%~na.ctl!——这个是修改文件名的。
        if "%%i"=="while(i<=6)" set "var=while(i<=!str!)"——这句是投机取巧的。
        for /d  %%l in ("%%~dpa") do  set "var=!var:d:\chenp\700h_=%%~fl700h_!"——这句是替换d:\chenp\这个路径为子文件夹路径的。
        echo;!var!
    )>>new_xxx.gs
pause
    echo grads -blc "%~dp1new_xxx.gs"
    del /f new_xxx.gs>nul 2>nul
)
pause
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

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

回复 37# cpp


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

TOP

返回列表