Я использую интерфейс командной строки MediaInfo в пакетном сценарии и не знаю, в чем проблема, но я не могу заставить эту команду работать, если я использую путь к папке, в котором есть пробелы. Я не новичок в пакетных сценариях и за эти годы создал сотни таких скриптов. Обычно я думаю, что использование двойных кавычек решит проблему, но я знаю, что это что-то еще, связанное с использованием команды «for/f» и передачей нескольких аргументов с двойными кавычками. Я пробовал все, что мог придумать, но все еще не могу заставить его работать, если я использую путь с пробелами. Без пробелов работает нормально, только не с пробелами.
Обратите внимание, что это не полный пакетный скрипт, а лишь фрагмент кода, вызывающего нарушение. Я также изменил двойные переменные «%%» на одинарные «%», чтобы упростить тестирование в командной строке.
Кроме того, в моем пакетном сценарии вместо использования «эхо» я вывожу в переменную, поэтому я должен использовать команду «для». Все это не имеет отношения к данному конкретному вопросу.
РАБОЧИЕ ПРИМЕРЫ
for /f %g in ('C:\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g
.
for /f "usebackq delims=" %g in (`C:\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"`) do echo %g
.
НЕ РАБОТАЮЩИЕ ПРИМЕРЫ
for /f %g in ('"C:\folder with spaces\MediaInfo.exe" "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g
.
for /f "usebackq delims=" %g in (`C:\folder with spaces\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"`) do echo %g
Обе команды "НЕ РАБОТАЮТ" приводят к одной и той же ошибке...
«C:\folder» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл.
usebackq
вместе с'
позволяет интерпретировать часть послеin
как буквальную строку, но не как команду для выполнения; вам понадобится `вместо этого. В любом случае, это не поможет в данной ситуации... - person aschipfl   schedule 19.05.2020