окна cmd не отображают вывод - PullRequest
0 голосов
/ 19 марта 2019

У меня проблема с тем, что мои окна cmd просто пустые при исполнении из кода.Я искал здесь и там некоторые решения.И сам попробовал несколько разных вещей.

Запуск его с обычным .bat файлом работает просто отлично .. Но только не из моего приложения на C #.

Примечание: ffmpeg выполняется отлично, но просто ничего не отображается в окне cmd при выполнении из кода.

изображение внизу.Я обновлю это, если найду решение .. Если вы, ребята, не сделаете это первым;)

Код:

      private async void RunFfmpeg()
    {
        await Task.Run(() =>
        {
        String destFolder = null;
        String sourceFolder = null;
        int listCount = 0;

        this.Dispatcher.Invoke(() =>
        {
            destFolder = textDest.Text;
            sourceFolder = textSource.Text;
            listCount = listFiles.Items.Count;
        });



        foreach (FileInfo fileC in listFiles.Items)
        {
            //Changing old extension to mp4
            string oldFileName = fileC.ToString();
            string newFileName = null;

            string[] extension = oldFileName.Split('.');

            newFileName = extension[0] + ".mp4";

            string newDir = destFolder + "\\" + extension[0];
            DirectoryInfo createDir = new DirectoryInfo(newDir);

            if (!createDir.Exists)
            {
                createDir.Create();
            }

            //Gathering folders and all I need...
            string output = "\"" + destFolder + "\\" + extension[0] + "\\" + newFileName + "\"";
            string input = "\"" + sourceFolder + "\\" + oldFileName + "\"";

                var startInfo = new System.Diagnostics.ProcessStartInfo
                {
                    FileName = "cmd.exe",
                    //Arguments = $"-i {input} {output}",
                    Arguments = $"/c ffmpeg -i {input}" + " -c:a copy -c:v copy " + $"{output}",
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = false,
                    WorkingDirectory = Directory.GetCurrentDirectory()
                };
                Process p = new Process();
                p.StartInfo = startInfo;
                p.OutputDataReceived += P_OutputDataReceived;
                p.Start();
                p.WaitForExit();
            }
        });
    }

Вот где я читаю вывод:

        private void P_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        this.Dispatcher.Invoke(() =>
        {
            //string cmdBox = cmdOutput.Text;
            //cmdOutput.AppendText(cmdBox);
            //cmdOutput.Clear();
            cmdOutput.AppendText(e.Data);
        });
    }

Images showing blank cmd

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