2016-07-11 7 views
0

Я работаю над ILOG, который разработан IBM. Программа ILOG можно запустить с помощью CMD консоли следующим образом:Ошибка внешней справочной системы C#

oplrun -p C:\Users\pc_copat\opl\santez\"workName"

Когда я пишу этот код выше CMD экран консоли, программа работает без ошибок. Хотя, когда я использовал эти коды в C#, как показано ниже, он не работает.

`string komut = @"oplrun -p C:\Users\pc_copat\opl\santez\ " + '\u0022' + calismaAdi + '\u0022';` 

     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     //startInfo.CreateNoWindow = false; 
     startInfo.UseShellExecute = false; 
     startInfo.FileName = "cmd.exe"; 
     startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     startInfo.Arguments = "/K "+komut; 

     try 
     { 
      // Start the process with the info we specified. 
      // Call WaitForExit and then the using-statement will close. 
      using (Process exeProcess = Process.Start(startInfo)) 
      { 
       exeProcess.WaitForExit(); 
      } 
     } 
     catch 
     { 
      // Log error. 
     } 

Я всегда получаю эту ошибку:

'oplrun' is not recognized as an internal or external command, operable program or batch file.

Как я могу исправить эту проблему?

+0

Попробуйте использовать полный путь к файлу для oplrun.exe в вашем коде, а не только команды. Если это работает, дважды проверьте переменную среды PATH вашей системы, чтобы убедиться, что система знает, где найти oplrun. –

+0

Правильно ли это? 'C: \ Users \ pc_copat \ opl \ santez \" + '\ u0022' + calismaAdi + '\ u0022'', я вижу несколько слэшей и несколько дополнительных кавычек? – Hexie

ответ

-1

Вместо передачи параметров, вы можете использовать StandardInput.WriteLine для выполнения команд на ЦМД ...

string komut = @"oplrun -p C:\Users\pc_copat\opl\santez\ " + '\u0022' + calismaAdi + '\u0022'; 

    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    //startInfo.CreateNoWindow = false; 
    startInfo.UseShellExecute = false; 
    startInfo.FileName = "cmd.exe"; 
    startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    //startInfo.Arguments = "/K "+komut; 
    startInfo.RedirectStandardOutput = true; 
    startInfo.RedirectStandardInput = true; 
    string currentFolderString = AppDomain.CurrentDomain.BaseDirectory; // Not sure if this will work but it should be your directory containing the oplrun.exe 
    try 
    { 
     // Start the process with the info we specified. 
     // Call WaitForExit and then the using-statement will close. 
     using (Process exeProcess = Process.Start(startInfo)) 
     { 
      exeProcess.StandardInput.WriteLine(string.format("cd \"{0}\"", currentFolderString)); // navigate to the oplrun.exe directory 
      exeProcess.StandardInput.WriteLine(komut); // execute komut instead of as param 
      exeProcess.WaitForExit(); 
     } 
    } 
    catch 
    { 
     // Log error. 
    } 

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

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