标题: [文件操作] 批处理如何修改1.bat里的指定文字内容然再执行,循环执行? [打印本页]
作者: 1134615818 时间: 2017-10-24 14:41 标题: 批处理如何修改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 再运行一次,直到给定指定的数字运行完后停止运行。
又或者可不可以把这个批处理合并到现在执行的批处理里一个文件运行后停止,谢谢大神
作者: 0000 时间: 2017-10-24 19:39
- set end=3
- 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
复制代码
作者: 1134615818 时间: 2017-10-25 10:17
如果是前一种要存下档呢————要怎样写
作者: 1134615818 时间: 2017-10-25 10:32
意思就是查找当前文件夹这个1.bat里面的这段 -start:0 -end:0文字改成-start:1 -end:1然后保存就OK了——怎样编写这个?
作者: 1134615818 时间: 2017-10-26 09:59
0000 发表于 2017-10-24 19:39
因为中间要再运行其它的批处理呀
作者: 1134615818 时间: 2017-10-26 10:45
本帖最后由 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为止——,请求大神指点???????????????
作者: 1134615818 时间: 2017-10-26 14:56
我要每运行一次就要增加那个内容里的数字+1甘样——,大神怎改代码啊?
作者: lifei259 时间: 2017-10-29 16:29
本帖最后由 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
批理内容如下:- @echo off
- for /f "tokens=1,* delims=:" %%i in ('findstr/n .* 1.bat') do (
- if %%i==1 set n=%%j&goto:main
- )
-
- :main
- set /a n1=n+1
- echo,:%n1%>>$
- setlocal enabledelayedexpansion
- for /f "skip=1 delims=" %%a in (1.bat) do (
- set aa=%%a
- set aa=!aa:-start:%n% -end:%n%=-start:%n1% -end:%n1%!
- echo !aa!>>$
- )
- del 1.bat
- move $ 1.bat
复制代码
这样可以达到你要的效果,但是改1.bat的内容,就要连标号改成一致,才能发作用。
作者: 1134615818 时间: 2017-10-30 15:39
本帖最后由 1134615818 于 2017-11-8 11:28 编辑
11111111111111111111
作者: 1134615818 时间: 2017-11-7 14:54
本帖最后由 1134615818 于 2017-11-8 11:28 编辑
111111111111111111111
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |