如何在Windows CMD中的单行命令之间插入注释?

时间:2020-02-11 03:37:52

标签: cmd command-line comments blender

我是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。
我认为批处理文件的语法可能无法解决此问题。
当我用%= =%包装第二行时,混合器将打印%= =%并退出,如下图所示。 enter image description here


jeb的工作原理!
我拍了一张GIF作为纪念。
请注意,用单行代码替换即可更改两个图像的分辨率。
由于jeb的解决方案,我现在可以轻松地测试我的代码,以使用数十个混合文件批量渲染数千个图像。
enter image description here

1 个答案:

答案 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中使用它,则变量名中不得包含定界符(空格,逗号,等号)。