我是3D软件Blender的用户。
我试图在CMD中运行,因为Blender提供了CLI控制。
下面的代码工作正常。
blender -b "my.blend" ^
--python-text "lowResoltion" ^
-S "scene 01" ^
-o "// output \ ##" -F PNG -f 3 ^
-S "scene 02" ^
-o "// output \ ##" -F PNG -f 5
但是我想暂时注释掉第二行的lowResolution。
但是,上面的代码看起来像几行,但是由于^
而成为一行,因此当我使用rem
或::
时,它似乎被视为告诉Blender {{ 1}} / rem
而不是告诉CMD。
CMD以其母语理解::
和rem
,但对于Blender来说听起来像是外语。
在这种情况下,是否可以注释掉第二行?
Squashman带来的链接中的问题与我的问题类似。
但是,此链接的解决方案::
注释方法似乎仍传递给Blender而不是CMD。
我认为批处理文件的语法可能无法解决此问题。
当我用%= =%
包装第二行时,混合器将打印%= =%
并退出,如下图所示。
jeb的工作原理!
我拍了一张GIF作为纪念。
请注意,用单行代码替换即可更改两个图像的分辨率。
由于jeb的解决方案,我现在可以轻松地测试我的代码,以使用数十个混合文件批量渲染数千个图像。
答案 0 :(得分:3)
proposed solution with percent expansion在命令行上不起作用,因为在命令行上未定义的变量不会扩展为空,而是保持不变。
但是您可以使用很少使用的百分比修饰符语法%~$ANY_PATH_VARIABLE:I
。
这会在ANY_PATH_VARIABLE
中列出的所有路径中搜索存储在FOR变量I
中的文件。
听起来很奇怪,但就您而言,这很简单
FOR %# in (dummy) DO @blender -b "my.blend" ^
%~$==--python-text "lowResoltion":# ^
-S "scene 01" ^
-o "// output \ ##" -F PNG -f 3 ^
-S "scene 02" ^
-o "// output \ ##" -F PNG -f 5 ^
%~$==SECOND-comment, the double colon is forbidden:# ^
%~$==THIRD-comment, but percent % is okay:#
注释以%~$==
开头,以:#
结尾。
这将在变量%#
或==--python-text...
中搜索变量==SECOND-comment, the ...
。
这些变量不存在,因为它们以等号开头。
因此,扩展的结果始终为空,因为dummy
不能是未定义变量的任何目录中的文件。
只有一个小问题,如果您仍要在Windows XP中使用它,则变量名中不得包含定界符(空格,逗号,等号)。