2016-01-26 5 views
0

Я пересоздаю «командную строку» в форме Windows. Приложение работает неправильно; и я не могу найти ошибку.C# cmd - недопустимый термин выражения,) ожидается Exiftool

exiftool photo_file.jpg |find "Shutter Count" 

Эта команда работает правильно в командной строке. Подумайте, что мне здесь не хватает?

private void btncheck_Click(object sender, EventArgs e) 
    { 
     String StrCmdText; 
     var process = Process.Start("CMD.exe", "/c exiftool " + txtBrowse.Text + " |find "Shutter Count""); 
     process.WaitForExit(); 
    } 
+4

Вам нужно избегать ваших кавычек : '' | find \ "Shutter Count \" " –

+0

Вам не нужно выводить выходные данные Exiftool для фильтрации результатов. Вы можете использовать 'exiftool -ShutterCount', чтобы получить только ShutterCount. – StarGeek

ответ

3

Просто используйте строковый литерал \" и изменить код

var process = Process.Start("CMD.exe", "/c exiftool " + txtBrowse.Text + " |find \"Shutter Count\""); 

или

var process = Process.Start("CMD.exe", "/c exiftool " + txtBrowse.Text + " |find ""Shutter Count"""); 
1

пытается начать процесс с аргументами, как это ...

var p = new System.Diagnostics.Process(); 
    p.StartInfo.FileName = "cmd.exe"; 
    p.StartInfo.Arguments = "/c arguments here"; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.CreateNoWindow = true; 
    p.Start(); 

 Смежные вопросы

  • Нет связанных вопросов^_^