Передайте несколько аргументов в командный файл из C # - PullRequest
0 голосов
/ 01 мая 2019

У меня есть этот командный файл:

@echo off
cd "C:\Program Files (x86)\Microsoft Dynamics 365 Business Central\130\RoleTailored Client\finsql.exe" Command=ExportToNewSyntax, File=%1.%5.txt, Database=%2, ServerName=%3, Filter=Type=%4; ID=%5
pause

Для некоторых параметров я создал текстовые поля для форм динамического заполнения (, но теперь я использую строковые переменные для примера ).

Код, который я использую для заданных параметров:

private void Start_Click(object sender, EventArgs e)
{
    string myBat = @"C:\NAV.bat";

    string _PathtoSourceObject = @"D:\ConvertToExtentions\CAL\";
    string _DataBase = @"Demo Database NAV (13-0)NA";
    string _ServerName = @"testserver";
    string _TypeObject = "table";
    string _IDObject = "22";

    Process process = new Process();

    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.RedirectStandardOutput = true;

    process.StartInfo.Arguments = String.Format("\"{0}\" \"{1}\" \"{2}\" \"{3}\" \"{4}\"", _PathtoSourceObject, _DataBase, _ServerName, _TypeObject, _IDObject);
    process.StartInfo.FileName = myBat;

    process.Start();
}

Проблема в том, что у меня просто пустое окно консоли.

Можете ли вы объяснить, что я пропустил?

1 Ответ

0 голосов
/ 01 мая 2019

Не могли бы вы запустить exe-файл напрямую? Как вы уже сделали, но с полностью определенным исполняемым именем файла:

process.StartInfo.Arguments = String.Format("Command=ExportToNewSyntax File=\"{0}\" Database=\"{1}\" ServerName=\"{2}\" Filter=\"{3}\" Type=\"{4}\"", _PathtoSourceObject, _DataBase, _ServerName, _TypeObject, _IDObject);
process.StartInfo.FileName = exeFile; // full qualified name here

И после запуска процесса добавьте эти строки, чтобы получить выходные данные и возможные ошибки:

string output = process.StandardOutput.ReadToEnd();
string errors = process.StandardError.ReadToEnd();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...