mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dos-Eingabeaufforderung


Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: freak freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe es hinbekommen

danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.