Подобие командной строки

Привет всем! Неоходимо написать подобие командной строки, саму командную строку показывать необизательно.1 - й параметр(.exe) выбирается с помощью OpenFileDialog 2 - й параметр(.txt) тоже выбирается с помощью OpenFileDialog при нажатии на кнопку, необходимо чтобы они выполнились как в Командной строке FAR . (например CC5X.EXE STARTUP.TXT ) надо чтоб EXE - шник(1 - й параметр) в качестве параметра на выолнение выбрал нужнуй текстовый файл(2 - й параметр)помогите plz!!!надо запустить exe-шник из C# + с параметром(txt)
9 ответов

            using (OpenFileDialog ofd = new OpenFileDialog()) {
                string file = null, cmd = null;
 
                ofd.Filter = "Exe files|*.exe";
                if (ofd.ShowDialog() == DialogResult.OK)
                    file = ofd.FileName;
 
                ofd.Filter = "Txt files|*.txt";
                if (ofd.ShowDialog() == DialogResult.OK)
                    cmd = ofd.FileName;
 
                if (file != null)
                    Process.Start(file, cmd);
            }


Прога работает! но не с моим exe-шнико (((((в far если написать в командной строке(CC5X.EXE README.TXT ) то все работает , но в C# почемуто не хочет.пишет OPTION ERROR: Duplicate filen ame or option error 'and'вот код проги
ProcessStartInfo startInfo = new ProcessStartInfo("D:\\CC5X.exe");
             startInfo.Arguments = "D:\\README.TXT";      
           
                Process.Start(startInfo);
                for (int i = 0; i < 1000000000000000; i++)// что увидеть ошибку
                {  }
при запуске в Far (CC5X.EXE README.TXT ) образуются 2 файла (если все работает) а в C# ничего не происходит, по отдельности процессы запускаются.вот сами файлы


Ехе - шник представляет их себя - компилятор C++ а параметр - прога на C++(.с) можно (.txt)


Federer, всё работает. Просто файлы создаются там где находится exe твоей программы (не компилятор).Если тебе надо рядом с компилятором, то перепиши пример так:
            using (OpenFileDialog ofd = new OpenFileDialog()) {
                string file = null, cmd = null;
 
                ofd.Filter = "Exe files|*.exe";
                if (ofd.ShowDialog() == DialogResult.OK)
                    file = ofd.FileName;
 
                ofd.Filter = "Txt files|*.txt";
                if (ofd.ShowDialog() == DialogResult.OK)
                    cmd = ofd.FileName;
 
                if (file != null) {
                    Process.Start(new ProcessStartInfo(file, cmd) {
                        WorkingDirectory = Path.GetDirectoryName(file)
                    });
                }
            }


Переискал везде, и там и там нет ... попробуйте запустить с файлами, которые я выложил.


Federer, а я что по твоему сделал?Измени код на этот и посмотри что выводится в log.txt (будет создан рядом с компилятором), возможна там будет написана причина твоей проблемы:
            using (OpenFileDialog ofd = new OpenFileDialog()) {
                string file = null, cmd = null;
 
                ofd.Filter = "Exe files|*.exe";
                if (ofd.ShowDialog() == DialogResult.OK)
                    file = ofd.FileName;
 
                ofd.Filter = "Txt files|*.txt";
                if (ofd.ShowDialog() == DialogResult.OK)
                    cmd = ofd.FileName;
 
                if (file != null) {
                    Process proc = Process.Start(new ProcessStartInfo(file, cmd) {
                        UseShellExecute = false, RedirectStandardOutput = true,
                        WorkingDirectory = Path.GetDirectoryName(file)
                    });
 
                    File.WriteAllText(Path.Combine(Path.GetDirectoryName(file), "log.txt"),
                        proc.StandardOutput.*********()
                        );
                }
            }


там должны образоваться два файла с разрешениями (.occ) и (.нех)я проверяю, у меня их нет (вот прога
       private void button5_Click(object sender, EventArgs e)
        {
 
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                string file = null, cmd = null;
 
                ofd.Filter = "Exe files|*.exe";
                if (ofd.ShowDialog() == DialogResult.OK)
                    file = ofd.FileName;
 
                ofd.Filter = "Txt files|*.txt";
                if (ofd.ShowDialog() == DialogResult.OK)
                    cmd = ofd.FileName;
 
                if (file != null)
                {
                    Process.Start(new ProcessStartInfo(file, cmd)
                    {
                        WorkingDirectory = Path.GetDirectoryName(file)
                    });
                }
            }
           
        }
с новым кодом проверилвот содержимое log.txtCC5X Version 3.2G, Copyright (c) B Knudsen Data, Norway 1992-2005 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim. OPTION ERROR: Duplicate file name or option error 'and'


Federer, я читать умею:
при запуске в Far (CC5X.EXE README.TXT ) образуются 2 файла (если все работает)
После выполнения программы у меня создаются 2 файла: README.occ README.hexВ пути передаваемом компилятору, как параметр, не должно быть пробелов! Иначе компилятор воспринимает значения после пробела как параметры.Т.е. путь к файлу либо не должен содержать пробелов, либо должен быть представлен в короткой форме (short path name), либо должен быть в кавычках. Измени код на этот:
            using (OpenFileDialog ofd = new OpenFileDialog()) {
                string file = null, cmd = null;
 
                ofd.Filter = "Exe files|*.exe";
                if (ofd.ShowDialog() == DialogResult.OK)
                    file = ofd.FileName;
 
                ofd.Filter = "Txt files|*.txt";
                if (ofd.ShowDialog() == DialogResult.OK)
                    cmd = ofd.FileName;
 
                if (file != null) {
                    Process proc = Process.Start(new ProcessStartInfo(file, "\"" + cmd + "\"") {
                        WorkingDirectory = Path.GetDirectoryName(file)
                    });
                }
            }


все работает! Большое тебе СПАСИБО!!!=)