System() Problem



  • char *read_directory="dir /a-D/b |findstr /vi .exe >dir.txt";
    int chck=-1;
    puts(read_directory);
    chck=system(read_directory);
    

    Direkt in die Console eingegeben funktioniert der Befehl einwandfrei.
    Über System rausgeschickt immer folgende Fehlermeldung : "Der Befehl findstr ist entweder falsch geschrieben oder konnte nicht gefunden werden".

    Weiß jemand was ich falsch mache, vom Benutzen von System abgesehen?



  • unsure schrieb:

    Direkt in die Console eingegeben funktioniert der Befehl einwandfrei.
    Über System rausgeschickt immer folgende Fehlermeldung : "Der Befehl findstr ist entweder falsch geschrieben oder konnte nicht gefunden werden".

    Dir ist der Pfad zum Programm findstr.exe verloren gegangen. Während 'dir' ein interner Befehl der Console ist, ist 'findstr' ein externes Programm.

    Klappt:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main ( void )
    {
    
    	char *read_directory="dir /a-D/b | %SYSTEMROOT%\\system32\\findstr /vi .exe >dir.txt";
    	int chck=-1;
    	puts(read_directory);
    	chck=system(read_directory);
    
    	return chck;
    }
    

    viele grüße
    ralph



  • Bei mir gehts auch so.
    Ist "%SYSTEMROOT%\\system32\" in deiner PATH variable eingetragen ?



  • Ok, danke!

    Ist "%SYSTEMROOT%\\system32\" in deiner PATH variable eingetragen ?

    ?? Welche PATH Variable?



  • Die Windows Umgebungsvariable PATH. Da sollte \Windows\System32 eigentlich eingetragen sein.


  • Mod

    Ich hoffe, das ist kein ernsthaftes Programm, um vi.exe zu starten, oder? Das ginge wesentlich besser.



  • SeppJ schrieb:

    Ich hoffe, das ist kein ernsthaftes Programm, um vi.exe zu starten, oder? Das ginge wesentlich besser.

    Das /vi sind die Optionen für findstr :
    `/i Ignores the case of the characters when searching for the string.

    /v Prints only lines that do not contain a match.`



  • Nein, kein Ernsthaftes Problem.
    Nur die Dateien in einem Ordner auslesen, ohne .exe Dateien.
    Vielleicht etwas stümperhaft, aber mir reicht es aus.



  • Die Windows Umgebungsvariable PATH. Da sollte \Windows\System32 eigentlich eingetragen sein.

    Hab den Wiki-Eintrag gelesen. Laut 'SET' ist Windows\System32 nicht eingetragen.

    Reicht ein SET PATH= Windows\System32 zum hinzufügen, oder mache ich damit mehr kaputt ?



  • Damit setzt du die Variable auf diesen einen Wert. -> kaputt
    Auch ist die Festlegung auf den Ordner windows nicht gut. Dafür gibt es die Variable SYSTEMROOT.

    SET PATH=%PATH%;%SYSTEMROOT%\system32
    

    hängt es an.
    Und bei Leerzeichen beim = bin ich auch vorsichtig.

    Du kannst die C:\autoexec.bat editieren/anlegen und das da reinschreiben (achte auf das Zeilenende).
    ^(zumindest ging das bei mir mit Windows 7-64 Enterprise ohne Probleme, aber da ist system32 auch im PATH)^


  • Mod

    unsure schrieb:

    Nein, kein Ernsthaftes Problem.
    Nur die Dateien in einem Ordner auslesen, ohne .exe Dateien.
    Vielleicht etwas stümperhaft, aber mir reicht es aus.

    Auch das geht sicher wesentlich besser, wenn du im Winapi-Forum fragst, wie das geht. system ist, trotz des Namens, eine sehr ungeeignete Art und Weise, Systemcalls zu machen.


Anmelden zum Antworten