j1rechert
Goto Top

Mit C einen Text String in einer Bat verändern...Hiilfeee!

Hallo Leute,

ich hoffe mir ist noch zu helfen. Versuche gerade mir ein wenig Cbeizubringen und "oh Wunder"....jede Menge Probleme und Fragenface-smile

Ich möchte mittels C oder Cplusplus einen Text String in einer .bat verändern.
Einfach in der .bat die beiden Wörter suchen lassen und durch andere ersetzen.

Hab jetzt nun einige Stunden mit versuchen und suchen verbracht....ich kriegs aber nicht gebacken.

Kann mir jemand sagen wie das funktioniert??

greets

Content-ID: 18222

Url: https://administrator.de/contentid/18222

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

ketchup
ketchup 21.10.2005 um 21:13:30 Uhr
Goto Top
warum gerade mit C?

face-wink
13100
13100 21.10.2005 um 22:50:00 Uhr
Goto Top
was'n dat für ne eigenartige beschreibung.
kann man die mal klar definieren?
j1rechert
j1rechert 22.10.2005 um 12:44:19 Uhr
Goto Top
na ja, weil ich C lernen möchte
Bin aber für alle Vorschläge offen face-smile
j1rechert
j1rechert 22.10.2005 um 12:48:05 Uhr
Goto Top
also nochmal eine genauere Beschreibung:

Ich hab ein Login script (login.bat) in der ich einen Wert verändern möchte, der bei einer Prüfung ein Popup ausgibt. Dieses Popup möchte ich unterdrücken indem ich den Wert verändere und die Veränderung möchte ich über ein anders Script herführen (am liebsten in C/C++).
13100
13100 22.10.2005 um 13:38:27 Uhr
Goto Top
kannst du mal dein loginscript posten, zumindest
den betreffenden teil.
j1rechert
j1rechert 22.10.2005 um 13:49:51 Uhr
Goto Top
dier der betreffende Text String:
SET FEHL=0
for /f "tokens=1,* delims=:" %%a in ('TYPE %temp%\login.log ^| find "Fehlend: "') do echo %%b >> %temp%\login.log.f& SET FEHL=1
IF NOT "%FEHL%"=="1" goto nopopup
(In dem Log wird geprüft ob eine Anwendung fehlt oder nicht zu erreichen ist und wird per Popup gemeldet.
ich möchte die Variable SET FEHL=1 verändern in SET FEHL=0 damit das Popup nicht mehr hochkommt. Da diese bat auf vielen Rechnern liegt und einige lokal nicht zu erreichen sind, möchte ich über ein Script oder eine EXE diese Veränderung remote ausführen.
ketchup
ketchup 22.10.2005 um 16:00:14 Uhr
Goto Top
dier der betreffende Text String:
SET FEHL=0
for /f "tokens=1,* delims=:" %%a
in ('TYPE %temp%\login.log ^| find
"Fehlend: "') do echo %%b >>
%temp%\login.log.f& SET FEHL=1
IF NOT "%FEHL%"=="1"
goto nopopup
(In dem Log wird geprüft ob eine
Anwendung fehlt oder nicht zu erreichen ist
und wird per Popup gemeldet.
ich möchte die Variable SET FEHL=1
verändern in SET FEHL=0 damit das Popup
nicht mehr hochkommt. Da diese bat auf vielen
Rechnern liegt und einige lokal nicht zu
erreichen sind, möchte ich über
ein Script oder eine EXE diese
Veränderung remote ausführen.


kopier einfach eine neue version via logon-script hin.
j1rechert
j1rechert 22.10.2005 um 16:39:46 Uhr
Goto Top
Okay..hab nun einen anderen Weg versucht.
Nun will ich über C eine komplett neue Datei erstellen in der das ganze Script rein geschrieben wird.
Der Compiler hängt sich aber bei dem Text (fprintf (datei, "if /i "%1"=="-r" echo) an den Sonderzeichen auf. Fehler lt. invalid operands of types 'const char[7] and int to binary operator%....wie kann ich in C die Umsetzung der Sonderzeichen bewerkstelligen??
13100
13100 22.10.2005 um 18:00:22 Uhr
Goto Top
anführungszeichen: \"
anführungszeichen innerhalb eines, in anführungszeichen
gehaltenen stings, werden selten richtig interpretiert.
bei sonderzeichen sieht es auch nich besonders rosig aus.
wäre bei einer kompletten neuschreibung, eine
batchdatei nich sinnvoller?

rem * ins entsprechende verzeichnis wechseln
cd /d c:\windows

rem
* weg mit dem alten script
del script.cmd

rem * erstellen des neuen scripts, bzw
rem
* reinklatschen der neuen zeilen
echo "zeile1 von meinem neuen script" >> script.cmd
echo "zeile2 von meinem neuen script" >> script.cmd
echo "zeile3 von meinem neuen script" >> script.cmd
j1rechert
j1rechert 22.10.2005 um 18:16:25 Uhr
Goto Top
über die von dir genannte Möglichkeit habe ich auch nachgedacht, ist aber nicht der Sinn der Übung da ich es in C bewerkstelligen möchte.
Einfach eine .exe basteln die das ganze umsetzt, entweder eine komplett neue Datei mit dem nötigen Inhalt erstellt oder diesem SET Eintrag einen anderen Wert zuweist.
Das muss doch irgenwie zu handeln sein.
Übrigens ...Danke für deine Müheface-smile
ketchup
ketchup 22.10.2005 um 20:20:44 Uhr
Goto Top
über die von dir genannte
Möglichkeit habe ich auch nachgedacht,
ist aber nicht der Sinn der Übung da
ich es in C bewerkstelligen möchte.
Einfach eine .exe basteln die das ganze
umsetzt, entweder eine komplett neue Datei
mit dem nötigen Inhalt erstellt oder
diesem SET Eintrag einen anderen Wert
zuweist.
Das muss doch irgenwie zu handeln sein.
Übrigens ...Danke für deine
Müheface-smile

hm, also hab ich das richtig verstanden?
nur damit du dich mit C herumspielen kannst möchtest du für dein problem eine lösung über 97 umwege basteln?

wenn auf jedem client/server die gleiche datei liegt und du überall auch wieder die gleiche datei haben willst, dann erstelle dir doch diese neue datei lokal bei dir und kopiere sie dann einfach auf die jeweiligen clients.
ist 100mal einfacher und mit 1000mal weniger aufwand verbunden als ein edit-programm in C zu schreiben.
würds ja noch verstehen wenn du es in PERL oder kix32 lösen wollen würdest.
du kannst das problem aber auch einfach in batch lösen, indem du dich sed oder ähnlichem beschäftigst, die dir dann dein file editieren und nur den einen wert anpassen.

bist wohl ein admin mit zuviel zeit und zuwenig arbeit face-wink
Guenni
Guenni 24.10.2005 um 00:17:32 Uhr
Goto Top
über die von dir genannte
Möglichkeit habe ich auch nachgedacht,
ist aber nicht der Sinn der Übung da
ich es in C bewerkstelligen möchte.

@j1rechert

Hi,

wenn du das in C, C++, Pascal oder in was für eine Sprache auch immer
bewerkstelligen willst, eine Datei "remote" zu verändern, so wirst du ZWEI
Programme schreiben müssen.

Ein Programm läuft auf der "Remote-Maschine" als Server, also als ein
Programm, das auf Anfragen lauscht, um Dienste anzubieten.

Das zweite Programm, ist das Programm, das diese Dienste(als Client) in Anspruch nimmt.

Analog dazu nimm einfach das Beispiel Telnet. Ein Telnet-Client ist ein Programm
das auf einen anderen Computer zugreift. Was braucht man dazu?.....

einen Computer, der Telnet-Dienste bereitstellt.

Gruß
Günni
ketchup
ketchup 24.10.2005 um 08:05:44 Uhr
Goto Top
wenn du das in C, C++, Pascal oder in was
für eine Sprache auch immer
bewerkstelligen willst, eine Datei
"remote" zu verändern, so
wirst du ZWEI
Programme schreiben müssen.


hi,
da muss ich dir leider widersprechen.
es ist NICHT notwendig eine client-server-applikation zu schreiben.
auch wenn ers unbedingt in C oder sonst was schreiben möchte.
wozu gibt es UNC-Pfade bzw. Shares?

jürgen
j1rechert
j1rechert 24.10.2005 um 12:00:59 Uhr
Goto Top
Hi,

also ich hab es hinbekommenface-smile
Hab nur noch 2 kleine Problemchen:
Bei der Ausgabe schreiben in die Datei möchte ich ein Doppel Backslash und 2 mal das % Zeichen (also \\ und %%) ausgeben lassen. Er gibt mir aber immer nur eins aus. Ich wiess daß ich einen Backslash und ein % Zeichen mit einem zusätzlichen escapen muss, aber wie kommentiere ich im Compiler daß er mir die Zeichen doppelt ausgibt (z.B.: \\server\)?
ketchup
ketchup 24.10.2005 um 12:11:50 Uhr
Goto Top
noch 2 backslashes dazu?!

zb \\\\ => 2 backslashes escaped
beim % das gleiche

jürgen
j1rechert
j1rechert 24.10.2005 um 13:05:51 Uhr
Goto Top
thanks....geht einwandfrei face-smile
Guenni
Guenni 24.10.2005 um 22:43:59 Uhr
Goto Top
@ketchup

Hi,

das ist mir hinterher auch eingefallen, was ich da geschrieben hatte, aber da lag ich
schon im Bett, und hatte keine Lust mehr aufzustehen, um meinen "Senf" den ich
dazugegeben hab zu korrigieren.


Gruß
Günni