Mittels C eine Batch erstellen
-
Hallo,
ich möchte über eine exe eine .bat Datei erstellen.
Mein Compiler (devcpp) meckert mir aber beim compilieren die Sonderzeichen an.
Z. B.: fprintf (datei, "if /i "%1"=="-r" echo......er kann anscheinend das Zeichen % nicht weitergeben da es für ihn ein Operator ist. Das ganze soll aber nur als Text in die .bat geschrieben werden.
Kann mir hier jemand einen Tip geben?
Sorry, ihr werdet wahrscheinlich nur müde lächeln, aber ich lerne C erst gerade im Selbsstudium
-
\%
-
-
die " muessen geescapt werden, also \"
-
wenn ich vor die Sonderzeichen ein \ setze kommt nun die Meldung expected ')' before echo.
was iss das denn nun?
-
ganzer code, in [cpp] tags, wenns recht ist.
-
Fehler mit dem Operator hab ich mit escape behoben:
fprintf (datei, "if /i \"%1"=="-r" echo %LOGINVERS% & goto ENDEBK\n");
aber es kommt immer noch der Fehler: error: expected `)' before "echo"
wieso meckert er mir das echo an?
-
fprintf (datei, "if /i \"%1"=="-r" echo %LOGINVERS% & goto ENDEBK\n");
guck dir deinen code mal genau an. weil du ungequotete " in deinem string hast, geht der kaputt.
so muss es aussehen:
fprintf (datei, "if /i \"%%1\"==\"-r\" echo %%LOGINVERS%% & goto ENDEBK\n");
jedes woertliche % muss mit einem % gequotet werden, genauso jedes woertliche " mit einem backslash.
war dir das nicht klar oder woran liegts??
-
Nee, war mir nicht klar. Wie schon erwähnt, ich stehe noch bei den Anfängen:-)
Aber trotzdem Danke:-?
Hab aber noch ein Problem:
Bei der Ausgabe in die Datei gibt er mir bei einem Doppel Backslash oder % Zeichen (z.B.: \\ und %%) nur ein Zeichen aus. Zusätzliches kommentieren mit einem \ oder % hilft nicht.
Wie komentiere ich daß er mir die beiden Zeichen doppelt ausgibt?greets
-
Du mußt jedes einzelne Sonderzeichen getrennt escapen:
printf("\\\\"); // liefert '\\' printf("%%%%"); // liefert '%%'
-
So:
fprintf (datei, "%s", "if /i \"%1\"==\"-r\" echo %LOGINVERS% & goto ENDEBK\n");
kann man sich das Escapen der Prozentzeichen sparen. Ist sicherer.
-
Danke...habs mittlerweile raus gefunden.
Aber trotzdem Danke für die spontane und schnelle Hilfe....tolles Forum:-)