1prozentakku
Goto Top

Quellcode inkl. Leerzeilen per echo in Textdatei

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:
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

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:
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%  
...
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
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%  
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

Content-Key: 638581

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: 1ProzentAkku
1ProzentAkku Jan 07, 2021 at 14:24:36 (UTC)
Goto Top
Ich hab es hin bekommen...
Wichtig war die spitzen Klammern mit einem ^ vorweg zu markieren.

<?xml version="1.0" encoding="UTF-8"?> 
wurde somit zu
^<?xml version="1.0" encoding="UTF-8"?^> 
und
<string>UTF-8</string>
zu
^<string^>UTF-8^</string^>

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:
for /D %%a in ("C:\Users\*") do echo ^<?xml version="1.0" encoding="UTF-8"?^>>%%a\AppData\Roaming\TEST.txt  
und jede Weitere:
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  

Gruß Jakob