Ovládání cmd z aplikace   otázka

C#

Možná blbá otázka, možná špatně hledám. Je nějaká možnost jak ovládat command line? Např. pomocí Process spustím cmd.exe a chtěl bych posloupností příkazů ovládat celý proces.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Třída Diagnostics.Process má vlastnosti StandartInput a StandartOutput pro vstup a výstup do konzole. Výstup je lepší číst asynchroně pomocí příkazu BeginOutputReadLine (společně s událostí OutputDataReceived).

 static void Main(string[] args)
        {
            var startInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
            
            //přesměrovat vstup a výstup
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.UseShellExecute = false;
            

            //spustit cmd.exe
            var cmd = new System.Diagnostics.Process();
            cmd.StartInfo = startInfo;
            cmd.Start();

            //získat StreamReader a StreamWriter pro výstup a vstup
            cmd.BeginOutputReadLine();
            cmd.OutputDataReceived+=new System.Diagnostics.DataReceivedEventHandler(cmd_OutputDataReceived);
            var input = cmd.StandardInput;

            //zadat vstup
            input.WriteLine("help");


            Console.ReadLine();
        }

        static void cmd_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
        {
            //číst výstup
            Console.WriteLine("Output:\t" + e.Data);
        }

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To mám, to jsem už implementoval a funguje jak má. Ale mně by spíš zajímalo jak do řádku příkazy vkládat a spouštět je. POkud to samozřejmě jde.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback