批量生成变量以进行渲染

问题描述 投票:0回答:1

我有这个代码。它加载一系列.vrscene文件

for /f %%a IN ('dir /b /s "C:\Users\Beqarion\Desktop\test_for_batch*.vrscene"') do call "C:\Program Files\Autodesk\Maya2015\vray\bin\vray.exe" -scenefile=%%a -imgFile="C:\Users\Beqarion\Desktop\test_for_batch\img.jpg" -frames=1 -autoclose=1

正如你在最后看到的那样它有一个img输出和帧号。我需要创建一个变量,每次渲染.vrscene文件时都会递增,并将其添加到img.jpg,以便在每次渲染后保存一个新的img文件:img_0001img_0002等。我尝试了set /a varname+=1但它不起作用。另外我想补充一点,我不是程序员,也不是批处理代码。所以这里的一些人认为非常基本的东西可能不适合我。

batch-file batch-processing batch-rename
1个回答
2
投票
@Echo off&SetLocal EnableDelayedExpansion
Set "Basefldr=C:\Users\Beqarion\Desktop"
Set "vray=C:\Program Files\Autodesk\Maya2015\vray\bin\vray.exe"
Pushd "%Basefldr%"||(Echo can't cd to %Basefldr% &Pause &Exit /B 1)
Set ImgNo=10000
for /f "delims=" %%a IN (
  'dir /b /s "test_for_batch*.vrscene"'
) do (Set /A ImgNo+=1
  "%vray%" ^
  -scenefile=%%a ^
  -imgFile=".\test_for_batch\img_!ImgNo:~-4!.jpg" ^
  -frames=1 ^
  -autoclose=1
)
PopD

使用ImgNo=10000剥离最后四个位置时,初始!ImgNo:~-4!是获得前导零的必要条件。需要使用EnableDelayedExpansion结合!而不是通常的%来获取括号括起来的区域中的实际值。

© www.soinside.com 2019 - 2024. All rights reserved.