Escape-последовательность в аргументах в Process в C# - PullRequest
0 голосов
/ 20 марта 2020

Я хочу запустить docker команды из C# приложения, используя класс Process. Все команды docker работают нормально, но всякий раз, когда я хочу выполнить какую-либо команду, включая "" (двойные кавычки) или ' (одинарные кавычки), она не выполняется успешно.

void DeleteExistingImage()
{
   string command1 = "/C docker rmi $(docker images --format";
   string command2 = @"""{{.Repository}}:{{.Tag}}""";
   string command3 = "|findstr";
   string command4 = @"""myrepo/myimage""";
   string command5 = ")";
   string command = command1 + command2 + command3 + command4 + command5;
   ProcessCommand(command);
}

void ProcessCommand(string command)
{
    ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    UseShellExecute = false,
                    RedirectStandardError = true,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true,
                    FileName = "cmd.exe",
                    Arguments = command
                };
                mProcess.StartInfo = startInfo;
                mProcess.Exited += (sender, args) =>
                {
                    mProcess.Dispose();
                };
                mProcess.Start();
                string output = mProcess.StandardOutput.ReadToEnd();

                mProcess.Close();
}

Выше команда не работает в моем случае. Хотя я перепробовал все escape-последовательности, но не работал. Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...