Как вставить комментарии между однострочными командами в Windows CMD? - PullRequest
3 голосов
/ 11 февраля 2020

Я пользователь 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.
Я думаю, что, возможно, синтаксис пакетного файла не решит эту проблему.
Когда я обертываю вторую строку %= =%, блендер печатает ????? и выходит, как показано на рисунке ниже. , enter image description here


путь Джеба работает!
Я снял GIF как мемориал.
Обратите внимание, как разрешение двух изображений изменяется с помощью одной строки кода замена.
Благодаря решению Jeb теперь я могу легко протестировать свой код для пакетной визуализации тысяч изображений, используя десятки смешанных файлов.
enter image description here

1 Ответ

3 голосов
/ 11 февраля 2020

Предлагаемое решение с процентным расширением не работает в командной строке, потому что неопределенные переменные в командной строке не расширяются до нуля, а остаются без изменений.

Но вы можете использовать редко используемый синтаксис процента %~$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, там имя переменной не должно содержать разделителей (пробел, запятая, знак равенства).

...