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

3

我是Blender的用户,这是一款3D软件。
我想在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 rem / :: 而不是告诉CMD。
CMD可以理解rem::,但对于Blender来说则像是外语。

在这种情况下,有没有办法注释掉第二行呢?


Squashman提供的链接中的问题与我的问题类似。
然而,这个链接的解决方案,%= =%的注释方法,仍然似乎被传递给了Blender而不是CMD。
我认为可能是批处理文件的语法无法解决这个问题。
当我用%= =%包含第二行时,Blender会打印?????并退出,如下图所示。 enter image description here


jeb的方法有效!
我拍了一个GIF作为纪念。
请注意,两个图像的分辨率如何通过一行代码替换而更改。
由于jeb的解决方案,现在我可以轻松测试使用数十个.blend文件批量渲染成千上万个图像的代码。
enter image description here


是的,我的解决方案仅适用于批处理文件。您正在从命令行运行此操作。您不应该同时标记您的问题,因为答案和语法有时会有所不同。 - Squashman
1个回答

3
提议使用百分号扩展的解决方案 在命令行中不起作用,因为在命令行中未定义的变量不会展开为 nothing,而是保持不变。但是,您可以使用罕见的百分号修改器语法 %~$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:#

评论以%~$==开头,以:#结尾。

在变量中查找for变量%#,例如==--python-text...或者==SECOND-comment, the ...
这些变量不能存在,因为它们以等号开头。
因此,扩展的结果总是空的,因为dummy不能成为未定义变量的任何目录中的文件。

只有一个小问题,如果你仍然在尝试在Windows XP中使用它,则变量名称不能包含分隔符(空格、逗号、等号)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接