Announcement

Collapse
No announcement yet.

Speichern einer Ausgabe in Datei + Lesen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speichern einer Ausgabe in Datei + Lesen?

    Hallo,

    ich habe eine Applikation programmiert welche mit "ShellExecute" das "netsh.exe" Programm ausführt.
    Ich will jetzt die Ausgabe -c interface dump des netsh Programms in einer Textdatei speichern... dies kann man im DOS Fenster mit dem simplen Anhängsel "netsh -c interface dump > c:\textdatei.txt" machen...
    Unter C++ funktioniert das mit dem "> datei.txt" jedoch irgendwie nicht, d.h. er speichert einfach nicht.

    Wie kann ich das jetzt umgehen, bzw. wie lautet der Code um die Ausgabe am Bildschirm (welche von -c interface dump erzeugt wird) in einer ebensolchen Textdatei zu speichern?

    Und wie lautet der Code um diese wieder mit netsh einzulesen?? (netsh -f date.txt) Geht das so?

    Danke schonmal im Voraus,

    Philipp

  • #2
    Wie sieht der der Aufruf von Shellexecute aus?? Im 4. Parameter sollten die Werte für den Aufruf stehen.

    int aus=(int)ShellExecute(MeineAnwendung->Handle,0,"netsh.exe","-c interface dump > c:\textdatei.txt",0,SW_SHOWNORMAL);

    Näheres hier:
    http://home.snafu.de/christian.marquardt/quickies.1/1_index.html#shellexecute

    Eventuell mußt du das dann mit Create Prozess machen.

    Näheres hier:
    http://www.bytesandmore.de/rad/cpp/snipp/sc03001.ph
    Christian

    Comment


    • #3
      Hallo Christian,

      mein Aufruf sieht folgendermaßen aus:

      HINSTANCE hInstance= ShellExecute(GetSafeHwnd(),"open","netsh.exe","-c interface dump > c:\\nets.txt","C:\\WINNT\\SYSTEM32\\",SW_SHOWNORMA L);

      Das funktioniert ja auch - nur wird die Ausgabe NICHT in c:\nets.txt gespeichert, d.h. ich bekomme nur die Ausgabe des interface dumps auf der Konsole und das wars...

      Wie kann ich nun NetSH dazu bringen, "> c:\\nets.txt" auch auszuführen?? Gibt es da vielleicht Probleme mit dem ">"?

      Gruß
      Philip

      Comment


      • #4
        Würde mal das open entferne
        Christian

        Comment


        • #5
          Tja, habe das mal nachprogrammiert. Die Ausgabe wird nciht in die Datei geschrieben. Konnte allerdings nicht herausbekommen warum nicht
          Christian

          Comment


          • #6
            Ich habs aufgegeben, mit ShellExecute Parameter an DOS Applikationen zu übergeben und hab mir was anderes einfallen lassen:
            ich erstelle einfach mit CStdioFile eine BATCH Datei und in die lasse ich den Befehl an NetSH eintragen und lasse die direkt ausführen!

            Sieht so aus:

            CStdioFile f;
            if (f.Open("nsh.cmd",CFile::modeCreate || CFile::modeReadWrite))
            {f.WriteString("c:\\winnt\\system32\\netsh.exe -c interface dump > c:\\nets1.txt");
            f.Close();
            WinExec("nsh.cmd",SW_SHOW);}

            Allerdings klappt das nur manchmal... kann sich das jemand mal durchschaun und mir sagen warum das nur alle paar Mal funktioniert??

            Danke und Gruß,

            Philip

            Comment


            • #7
              Hi Philipp,
              <br>such doch mal hier im Forum nach "umleitung handle". Das liefert zwei Beiträge, die für dich interessant sein müssten, soweit ich den Thread hier verstanden habe. Dort kommen nicht nur die hier schon diskutierten und wieder verworfenen Ideen vor (glaube ich ;-))
              <br>Ciao, Uli

              Comment


              • #8
                Hallo!

                Ich möchte Zeichen einer mehrzeiligen Datei in einen Buffer ( char-Array[1024] ) auslesen.

                Mit get() bzw.getline() komme ich aber nur bis ans Ende der 1. Zeile... :-(

                Kann mir jemand helfen???

                Gruß Ale

                Comment

                Working...
                X