2017-02-22 47 views
1

Этот раствор при Windows batch assign output of a program to a variable, я использую следующий код:для Windows Batch Script - круглые скобки в качестве аргументов Ломать программы-Output-к-Variable Assignment

FOR /F %%I IN ('"ffprobe -v error -select_streams a:0 -show_entries stream=channels -print_format csv=p=0 %1"') DO ECHO %%I 

Это разбивает аргументы, содержащие скобки (например, файл имя). Например, файл под названием «Test File (2017.22.02) [1] .aac» вызывает следующую ошибку: [1].aac""') was unexpected at this time.

Любые идеи о том, как исправить это?

ответ

4
FOR /F "tokens=*" %%I IN (
    'ffprobe -v error -select_streams a:0 -show_entries stream^=channels -print_format csv^=p^=0 "%~1"' 
) DO ECHO %%I 

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

+0

Yup, цитаты были действительно моей проблемой. Уклонение от знака равенства, а не включение всей команды в кавычки, сделало трюк. Любая причина, хотя для использования ''% ~ 1 "', а не '% 1', когда я уверен, что'% 1' будет заключен в кавычки? – Makaveli84

+2

@ Makaveli84 - '' 'defquotes параметр (если есть кавычки), а затем они снова помещаются в случае, если в первом параметре есть пробелы. Это для надежности. – npocmaka