Запуск стороннего приложения и передача ему параметров - C#
Формулировка задачи:
Всем привет!
Из своего приложения запускаю стороннюю консольную программу и хочу передать ей строку с параметрами.
Перед этим, пользователь через окно обзора выбирает несколько файлов и добавляет их в список, происходит это так:
private void BtnAddAudio_Click(object sender, EventArgs e) { OfdAudio.Title = "Открытие файла"; OfdAudio.InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; OfdAudio.Multiselect = true; OfdAudio.Filter = "wav файлы (*.wav)|*.wav|mp3 файлы (*.mp3)|*.mp3|mp4 файлы (*.mp4)|*.mp4|ogg файлы (*.ogg)|*.ogg|m4a файлы (*.m4a)|*.m4a|flac файлы (*.flac)|*.flac|Все файлы (*.wav;*.mp3;*.mp4;*.ogg;*.m4a;*.flac)|*.wav;*.mp3;*.mp4;*.ogg;*.m4a;*.flac"; OfdAudio.FilterIndex = 1; OfdAudio.RestoreDirectory = true; if(OfdAudio.ShowDialog() == DialogResult.OK) { foreach(string file in OfdAudio.FileNames) { ListAudio.Items.Add(Path.GetFileName(file)); CreateArrayAudioFiles(file); } } }Далее формируется массив из строк, содержащих пути к файлам:
private void CreateArrayAudioFiles(string path) { SelectedFiles = new string[ListAudio.Items.Count]; for(int i = 0; i < SelectedFiles.Length; i++) { SelectedFiles[i] = path; } }и по нажатию на кнопку осуществляется перебор массива со строками и вызов для каждого файла отдельного процесса:
ConvertationAudioProcess.StartInfo.FileName = "ffmpeg.exe";
for(int i = 0; i < SelectedFiles.Length; i++)
{
ConvertationAudioProcess.StartInfo.Arguments = "-i \"\" + SelectedFiles[i] + \"\" result\\audio\\1.wav";
ConvertationAudioProcess.Start();
ConvertationAudioProcess.WaitForExit();
ConvertationAudioProcess.Close();
}
Всё бы ничего, но пути к файлам содержат пробелы.
Вопрос заключается в следующем:
Подскажите пожалуйста, как мне взять в кавычки путь к файлу, содержащийся в SelectedFiles[i]?
чтобы строка параметров выглядела примерно так:
-i "c:\Музыка\Новая папка" ...
Ведь если взять путь в кавычки, проблемы с пробелами не будет.
Я знаю, что нужно использовать конструкции типа ", но как правильно разместить эти конструкции и элемент массива с путём к файлу так, чтобы путь был в кавычках?
И сразу же хотел спросить, может кто знает, как указать имя выходного файла такое же, как и у входного?
То есть результирующий файл должен быть с таким же именем, как и входной, только другой формат у него будет.
Заранее большое спасибо! Код к задаче: «Запуск стороннего приложения и передача ему параметров - C#»
private void CreateArrayAudioFiles(string path) { SelectedFiles = new string[ListAudio.Items.Count]; for(int i = 0; i < SelectedFiles.Length; i++) { SelectedFiles[i] = path; // Один и тот же путь } }
11 голосов, оценка 4.364 из 5
СОХРАНИТЬ ССЫЛКУ