Forum: Mikrocontroller und Digitale Elektronik Dos-Eingabeaufforderung


von freak freak (Gast)


Lesenswert?

Hallo zusammen.


ne kurze frage


wie kann ich über ein programm etwas in die cmd schreiben??

zb soll das programm 2 sachen können 1. explorer starten 2. ein atribut 
setzen.

und das kann man ja bekanntlich im cmd einfach, darum möchte ich wissen 
wie ich ein programmcode in die cmd übergeben kann.


Danke für eure Antwort

Gruss
Freak

von Peter D. (peda)


Lesenswert?

C:\>cmd /?
Startet eine neue Instanz des Windows NT-Befehlsinterpreters.

CMD [/X | /Y] [/A | /U] [/Q] [[/C | /K] Zeichenfolge]

/C      Führt den Befehl in der Zeichenfolge aus und endet dann.
/K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
/Q      Schaltet die Befehlsanzeige aus.
/A      Ausgabe interner Befehle in eine Pipe oder Datei im ANSI-Format.
/U      Ausgabe interner Befehle in eine Pipe oder Datei im 
UNICODE-Format.
/T:fg   Legt die Hinter-/Vordergrundfarben fest (siehe auch COLOR /?)
/X      Aktiviert die Erweiterungen für die Windows NT-Version der Datei
        CMD.EXE.
/Y      Deaktiviert die Erweiterungen für die Windows NT-Version der
        Datei CMD.EXE.

Beachten Sie, daß Befehlsfolgen getrennt durch das Trennzeichen '&&'
nur akzeptiert werden, wenn sie zwischen Anführungszeichen stehen.
Befehlserweiterungen sind standardmäßig aktiviert. Sie können auch die
Erweiterungen für alle Aufrufe des Befehlsprozessors deaktivieren,
indem Sie den folgenden Wert in der Registrierung auf Null setzen:

    HKEY_CURRENT_USER\Software\Microsoft\Command 
Processor\EnableExtensions

Folgende Befehle wurden durch die Befehlserweiterungen geändert bzw.
hinzugefügt:

    DEL oder ERASE
    COLOR
    CD oder CHDIR
    MD oder MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (umfaßt auch Änderungen an externen Befehlsaufrufen)
    ASSOC
    FTYPE

Sie erhalten weitere Details, indem Sie HELP und den Befehlsnamen 
eingeben.

von freak freak (Gast)


Lesenswert?

Danke vorerst


Ich bin leider noch in ausbildung und interessiere mich gerade vertieft 
um c und das haben wir noch nicht gelernt. Mir fehlt daher noch ein 
source beispiel wie man das ganze aufruft.

Danke

Gruss
Freak

von Peter D. (peda)


Lesenswert?

Vermute das war wohl nicht so das, was Du wissen wolltest.
Es geht wohl eher darum, einen Tochterprozeß zu starten.

Das hängt davon ab, was für ein Programm du meinst. Ist es eine IDE, 
dann gibts da irgendwo Einstellungen oder Scripte dafür. Schließlich muß 
eine IDE ja Compiler usw. aufrufen können.

Ohne zu wissen, welches Programm Du meinst, kann man das aber nicht 
näher sagen.


Peter

von Matthias (Gast)


Lesenswert?

Hi

in ANSI-C gibt es die Funktion system(char*); (IIRC aus stdlib.h) Mit 
dieser kann ein Programm auf der Kommandozeile aufgerufen werden ohne 
das eigene Programm zu beenden. Allerdings wird kein neuer 
Prozess/Thread gestartet sondern es wird gewartet bis sich das 
aufgerufene Programm beendet hat.

Matthias

von freak freak (Gast)


Lesenswert?

Das ist genau das was ich gemeint habe.

kannst du mir ein beispiel geben.

Ich habe 2 punkte im menu zur auswahl 1. Anzeigen 2. Verstecken. bei 
punkt 1. soll er auf der cmd das machen:
d:
cd programme
attrib downloads /d /s +h

und bei punkt 2 dieses:
d:
cd programme
attrib downloads /d /s -h

Wie kann ich dies realisieren?

von freak freak (Gast)


Lesenswert?

Habe mal rumprobiert komme aber nicht auf die Richtige syntax.
Im moment sieht es mal so aus.


#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <stdlib.h>

int main()
{

 /* Local Data */
 /**************/

char  call[100];  //Aufruf variable

 /* Begin */
 /*********/

printf ("Bitte geben Sie den Befehl ein\n");
fgets (call, 100, stdin);

system(const char *call);  //Abgeleidet von
                           //int system(const char *string);

return(0);
}

von freak freak (Gast)


Lesenswert?

mein source sieht nun so aus.
das einlesen geht, überprüfe ich mit dem printf

kann auch compilieren nur geschiet nichts wenn ich das programm 
ausführe.


#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <stdlib.h>

int main()
{

 /* Local Data */
 /**************/

char  call[100];  //Aufruf variable

 /* Begin */
 /*********/

printf ("Bitte geben Sie den Befehl ein\n");
fgets (call, 100, stdin);

printf ("%s\n", call);
int system(const char *call);               //Abgeleidet von int 
system(const char *string);

return(0);
}

von Matthias (Gast)


Lesenswert?

Hi

versuch mal

int system(call);

Da du ja einen char* übergeben sollst und kein char. Mit deinem char 
*call dereferenzierst du aber den Pointer call.

Matthias

von freak freak (Gast)


Lesenswert?

habe es hinbekommen

danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.