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

[文件操作] 批处理如何修改1.bat里的指定文字内容然再执行,循环执行?

在当前目录下有一个批处理1.bat  里面内容里有:

start /w C:\"Program Files"\Autodesk\"3ds Max 2016"\3dsmaxcmd.exe "C:\Users\Administrator\Desktop\max\X.max" -o "C:\Users\Administrator\Desktop\max\1.tif" -w:2048 -h:2048 -rfw:0 -gammaValueIn:0 -start:0 -end:0 -camera:1

查找 -start:0 -end:0这段,然后更改成-start:1 -end:1 并且存档运行一次这个批处理后再将数值改为-start:2 -end:2 再运行一次,直到给定指定的数字运行完后停止运行。

又或者可不可以把这个批处理合并到现在执行的批处理里一个文件运行后停止,谢谢大神

  1. set end=3
  2. for /l %%n in (0,1,%end%) do start /w C:\"Program Files"\Autodesk\"3ds Max 2016"\3dsmaxcmd.exe "C:\Users\Administrator\Desktop\max\X.max" -o "C:\Users\Administrator\Desktop\max\1.tif" -w:2048 -h:2048 -rfw:0 -gammaValueIn:0 -start:%%n -end:%%n -camera:1
复制代码

TOP

如果是前一种要存下档呢————要怎样写

TOP

意思就是查找当前文件夹这个1.bat里面的这段 -start:0 -end:0文字改成-start:1 -end:1然后保存就OK了——怎样编写这个?

TOP

0000 发表于 2017-10-24 19:39




因为中间要再运行其它的批处理呀

TOP

本帖最后由 1134615818 于 2017-10-26 15:03 编辑

网上找到了方法了,修改当前文件内容再存档方法——特发上来


@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (原文件.txt) do (
set aa=%%a
set aa=!aa:要替换的内容=替换后的内容!
echo !aa!>>新文件.txt
)
del 源文件.txt
ren "新文件.txt" "原文件名.txt"


也就是代入我上边给出的文件是这样


@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (3.bat) do (
set aa=%%a
set aa=!aa:-start:0 -end:0=-start:1 -end:1!
echo !aa!>>z.bat
)
del 3.bat
ren "z.bat" "3.bat"



但这个方法好象只能修改一次——如果再想运行这段码再累加上去就不行——,就等于再运行一次我想修改-start:1 -end:1变为-start:2 -end:2如此累推直到变成-start:x -end:x为止——,请求大神指点???????????????

TOP

我要每运行一次就要增加那个内容里的数字+1甘样——,大神怎改代码啊?

TOP

本帖最后由 lifei259 于 2017-10-29 16:43 编辑

在当前目录下批处理1.bat  里面内容加一行标号,标号会和你改的内容一起改变,也就是说和-start:0 -end:0的最后尾数一样:
:0
start /w C:\"Program Files"\Autodesk\"3ds Max 2016"\3dsmaxcmd.exe "C:\Users\Administrator\Desktop\max\X.max" -o "C:\Users\Administrator\Desktop\max\1.tif" -w:2048 -h:2048 -rfw:0 -gammaValueIn:0 -start:0 -end:0 -camera:1

批理内容如下:
  1. @echo off
  2. for /f "tokens=1,* delims=:" %%i in ('findstr/n .* 1.bat') do (
  3. if %%i==1 set n=%%j&goto:main
  4. )
  5. :main
  6. set /a n1=n+1
  7. echo,:%n1%>>$
  8. setlocal enabledelayedexpansion
  9. for /f "skip=1 delims=" %%a in (1.bat) do (
  10. set aa=%%a
  11. set aa=!aa:-start:%n% -end:%n%=-start:%n1% -end:%n1%!
  12. echo !aa!>>$
  13. )
  14. del 1.bat
  15. move $ 1.bat
复制代码
这样可以达到你要的效果,但是改1.bat的内容,就要连标号改成一致,才能发作用。
1

评分人数

TOP

本帖最后由 1134615818 于 2017-11-8 11:28 编辑

11111111111111111111

TOP

本帖最后由 1134615818 于 2017-11-8 11:28 编辑

111111111111111111111

TOP

返回列表