Quellcode inkl. Leerzeilen per echo in Textdatei
1ProzentAkku (Level 1) - Jetzt verbinden
07.01.2021, aktualisiert 13:51 Uhr, 321 Aufrufe, 1 Kommentar
MoinMoin liebe Gemeinde!
Ich bin in Sachen Batch leider absoluter Anfänger, will auch nicht richtig rein in meinen Kopf und dennoch kann man es manchmal sehr gut gebrauchen.
Steinigt mich also bitte nicht direkt! ;)
Ich schreib mal die kurze und lange Version meiner Frage, wer Bock hat kann gerne tiefer einsteigen ;):
Kurz:
Ich benötige einen Weg in einer Batch Quellcode so einzuklammern, dass dieser genau so mit allen Sonderzeichen per echo in eine Zeile geschrieben werden kann.
Bsp:
Wie kann man den Quellcode so einklammern, dass dieser als Text behandelt wird?
Lang:
Für eine Softwareverteilung versuche ich gerade Configs an bestimmten Orten per Echo zu erzeugen.
Ich hatte zuerst das Problem, dass eine Config Zeilenumbrüche inne hat und diese ja auch genau so wieder ausgegeben werden müssen.
Bsp:
Das scheint man am besten zu regeln, wenn man für jede Zeile eine Variable setzt und diese in einzelnen Zeilen per Echo in die Datei schreiben lässt.
OK, kann ich mit leben. Aber da diese Config in alle Userprofilordner auf der aktuellen Maschine erzeugt werden muss, steht das "echo xxx > xyz.txt" auch noch mitten in einer Schleife.
Eigentlich
Es bleibt mir also wohl nichts anderes übrig, als die Schleife für jede einzelne Zeile (28 an der Zahl) zu wiederholen und jedes Mal eine weitere Zeile in %appdata% der gesamten Profilordner zu schreiben. Ok, nicht schön aber sollte gehen. Vielleicht hat hier schon jemand eine elegantere Lösung?
Dann habe ich weiterhin das Problem, dass ein echo leider nicht 1 zu 1 den Code ausgibt, sondern die Sonderzeichen für einen Abbruch der Batch sorgen.
Wie kann ich den Code wohl am besten so einpacken, dass ein echo diesen 1 zu 1 in eine Datei schreiben kann?
Besten Dank!
Gruß
Jakob
Ich bin in Sachen Batch leider absoluter Anfänger, will auch nicht richtig rein in meinen Kopf und dennoch kann man es manchmal sehr gut gebrauchen.
Steinigt mich also bitte nicht direkt! ;)
Ich schreib mal die kurze und lange Version meiner Frage, wer Bock hat kann gerne tiefer einsteigen ;):
Kurz:
Ich benötige einen Weg in einer Batch Quellcode so einzuklammern, dass dieser genau so mit allen Sonderzeichen per echo in eine Zeile geschrieben werden kann.
Bsp:
set INHALT1=<?xml version="1.0" encoding="UTF-8"?>
set INHALT2=<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
echo %Inhalt1%>c:\test.txt
echo %Inhalt2%>>c:\test.txt
Lang:
Für eine Softwareverteilung versuche ich gerade Configs an bestimmten Orten per Echo zu erzeugen.
Ich hatte zuerst das Problem, dass eine Config Zeilenumbrüche inne hat und diese ja auch genau so wieder ausgegeben werden müssen.
Bsp:
set Pfad=\AppData\Roaming\XYZ\
set Datei=test.txt
echo <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">**>**%PFAD%%DATEI%
...
OK, kann ich mit leben. Aber da diese Config in alle Userprofilordner auf der aktuellen Maschine erzeugt werden muss, steht das "echo xxx > xyz.txt" auch noch mitten in einer Schleife.
Eigentlich
for /D %%a in ("C:\Users\*") do echo <?xml version="1.0" encoding="UTF-8"?> HIER MÜSSTE ZEILENUMBRUCH <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> >%%a%PFAD%%DATEI%
Dann habe ich weiterhin das Problem, dass ein echo leider nicht 1 zu 1 den Code ausgibt, sondern die Sonderzeichen für einen Abbruch der Batch sorgen.
Wie kann ich den Code wohl am besten so einpacken, dass ein echo diesen 1 zu 1 in eine Datei schreiben kann?
Besten Dank!
Gruß
Jakob
1 Antwort
- LÖSUNG 1ProzentAkku schreibt am 07.01.2021 um 15:24:36 Uhr
LÖSUNG 07.01.2021 um 15:24 Uhr
Ich hab es hin bekommen...
Wichtig war die spitzen Klammern mit einem ^ vorweg zu markieren.
wurde somit zu
und
zu
Ich habe dazu auf die schöne Form verzichtet und nicht mit Variablen gearbeitet. In meinen Tests schlugen die Zeilen schon beim "set xyz" fehl.
Ich vermute nur "echo" kann mit dem markieren via ^der Spitzenklammern umgehen.
Und das Problem mit den 28 Zeilen habe ich nun wirklich so gelöst, mit der ersten Zeile erstelle ich die Datei ( > Datei ) und mit jeder weiteren Zeile füge ich dann nur noch eine weitere Zeile hinzu ( >> Datei ). Bedeutet halt, er läuft nun 28 Runden über alle vorhandenen Userodner und fügt jede Runde nur eine Zeile hinzu, aber naja, es funktioniert...
Somit also für die erste Zeile:
und jede Weitere:
Gruß Jakob
Wichtig war die spitzen Klammern mit einem ^ vorweg zu markieren.
<?xml version="1.0" encoding="UTF-8"?>
^<?xml version="1.0" encoding="UTF-8"?^>
<string>UTF-8</string>
^<string^>UTF-8^</string^>
Ich vermute nur "echo" kann mit dem markieren via ^der Spitzenklammern umgehen.
Und das Problem mit den 28 Zeilen habe ich nun wirklich so gelöst, mit der ersten Zeile erstelle ich die Datei ( > Datei ) und mit jeder weiteren Zeile füge ich dann nur noch eine weitere Zeile hinzu ( >> Datei ). Bedeutet halt, er läuft nun 28 Runden über alle vorhandenen Userodner und fügt jede Runde nur eine Zeile hinzu, aber naja, es funktioniert...
Somit also für die erste Zeile:
for /D %%a in ("C:\Users\*") do echo ^<?xml version="1.0" encoding="UTF-8"?^>>%%a\AppData\Roaming\TEST.txt
for /D %%a in ("C:\Users\*") do echo ^<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"^>>>%%a\AppData\Roaming\TEST.txt