Text in einer Datei schreiben per Batch

Jensmr

Cadet 1st Year
Registriert
Feb. 2020
Beiträge
8
Hallo zusammen
Ich kriege es einfach nicht hin einen Text per Batch einzufügen und verzweifle langsam...
Ich habe in einem Ordner zwei Dateien liegen:
"Test.bat" und "Test.txt"
Inhalt der Test.bat Datei:
echo Erste (1.) Zeile > Test.txt
echo Zweite (2.) Zeile >> Test.txt

Vorheriger Test.txt Datei Inhalt:
Ich bin ein einfacher Text.

Erwarteter Output in bestehender Test.txt Datei nach Ausführung der Batch Datei mit Adminrecht:
Ich bin ein einfacher Text.Erste (1.) Zeile
Zweite (2.) Zeile

Wieso funktioniert das nicht? Die Test.txt Datei bleibt unverändert.
 
Wie sieht denn dein Script aus?
echo "Zu schhreibender Text >> c:\test\%filename%.txt
sollte eigentlich das liefern was du möchtest.
Vielleicht mal den Pfad als ganzes eingeben.
Setz mal ans ende des Scriptes ein PAUSE.
Dann siehst du mögliche Fehler.
 
Jensmr schrieb:
Erwarteter Output in bestehender Test.txt Datei nach Ausführung der Batch Datei mit Adminrecht:
Ich bin ein einfacher Text.Erste (1.) Zeile
Zweite (2.) Zeile

Sorry, das ist falsch. Der erwartete Inhalt von Test.txt ist :
Code:
Erste (1.) Zeile
Zweite (2.) Zeile

Mit einem einfachen > leerst du die Datei und schreibst direkt danach den übergebenen Text hinein. Das heißt der ursprüngliche Inhalt von Test.txt geht hierbei verloren. Mit >> wird der übergebene Text angehängt. Stand jetzt wird deine Test.bat also Test.txt leeren, dann die erste Zeile reinschreiben, dann die zweite Zeile anhängen. Der ursprüngliche Inhalt von Test.txt wird bei jedem Lauf von Test.bat gelöscht und durch diese beiden Zeilen ersetzt.
 
DJKno schrieb:
Wie sieht denn dein Script aus?
echo "Zu schhreibender Text >> c:\test\%filename%.txt
sollte eigentlich das liefern was du möchtest.
Vielleicht mal den Pfad als ganzes eingeben.
Setz mal ans ende des Scriptes ein PAUSE.
Dann siehst du mögliche Fehler.
Danke für deine Antwort.
Das mit dem Pfad klappt ja schon, aber ich möchte gerne den Pfad auslassen und in die Datei reinschreiben, die im selben Ordner liegt.

PAUSE habe ich eingefügt
Folgendes:

C:\Windows\system32>echo Erste (1.) Zeile 1>Test.txt

C:\Windows\system32>echo Zweite (2.) Zeile 1>>Test.txt

C:\Windows\system32>PAUSE

---
Wieso kommt ein zusätzliches "1"

Raijin schrieb:
Sorry, das ist falsch. Der erwartete Inhalt von Test.txt ist :
Code:
Erste (1.) Zeile
Zweite (2.) Zeile

Mit einem einfachen > leerst du die Datei und schreibst direkt danach den übergebenen Text hinein. Das heißt der ursprüngliche Inhalt von Test.txt geht hierbei verloren. Mit >> wird der übergebene Text angehängt. Stand jetzt wird deine Test.bat also Test.txt leeren, dann die erste Zeile reinschreiben, dann die zweite Zeile anhängen. Der ursprüngliche Inhalt von Test.txt wird bei jedem Lauf von Test.bat gelöscht und durch diese beiden Zeilen ersetzt.
Achso alles klar.
Klappt trotzdem nicht. Habe es angepasst zu:
echo Erste (1.) Zeile >> Test.txt
echo Zweite (2.) Zeile >> Test.txt
PAUSE

Test.txt bleibt unverändert
 
Zuletzt bearbeitet:
1 ist der Standard Output Stream, 2 wäre der Error Output.

Du versuchst das ganze offenbar in system32 zu machen. Windows mag es nicht so gerne, wenn man darin rumeditiert. Führ das ganze mal in einem Nicht-System-Ordner aus bzw. lass den Output explizit auf zB >>C:\Test.txt laufen. Wenn das klappt, ist dein Code als solcher ok und es liegt schlicht und ergreifend an der Berechtigung.
 
Raijin schrieb:
Zitat entfernt - Bitte Regeln beachten!​
Ja, hab nun das Problem. Einfaches Doppelklicken auf die Batch Datei funktioniert. Ausführen mit Admin passiert nichts. Mein Problem ist jedoch, diese Batch Datei wird schlussendlich durch einen Installer ausgeführt. Dieser Installer muss mit Admin-Recht gestartet werden. Somit führt er natürlich auch die Batch-Datei mit Adminrecht aus.
Kann mir irgendwie nicht vorstellen, dass es da keine Möglichkeit gibt...
 
Zuletzt bearbeitet von einem Moderator: (Zitat des unmittelbar vorangestellten Beitrags entfernt)
Das liegt daran, dass der Admin einen anderen Standardpfad in der CMD vorgibt. Warum nutzt du nicht die Pfadangabe?
 
einfach einen absoluten Pfad angeben... also sowas wie c:\temp\test.txt (und wenn Leerzeichen im Pfad sind den Pfad in Anführungszeichen packen, bspw. "c:\Program Files (x86)\test.txt"
 
Genau, einfach den Pfad der Datei absolut angeben. Man merkt den Unterschied zwischen Admin-Pfad und Nicht-Admin-Pfad ja schon dadurch, dass die Eingabeaufforderung als Admin in C:\windows\system32 startet und als normaler Benutzer in C:\Users\Jensmr
 
Zurück
Oben