Windows Batch soll eine Datei erstellen und bearbeiten?
Ich möchte ein Batch-Programm schreiben welches erst eine Text-Datei erstellt und danach bestimmte Sachen in die Datei schreibt. Gibt es da Befehle für?
Und gibt es auch einen Befehl für input? Also wie bei bash eben read?
3 Antworten
Leere Datei erstellen:
type nul > C:\temp\text.txt
Datei mit Text erstellen:
echo Ich bin ein Text>C:\temp\text.txt
Zeilen an Datei anfügen:
echo Ich bin die zweite Zeile>>C:\temp\text.txt
Input in eine Variable schreiben (Achtung, keine Leerzeichen um das Gleich-Zeichen machen):
set /p x=Gib mal was nettes ein:
Ich würde dir aber allgemein empfehlen, dich nicht zu sehr mit Batch zu beschäftigen. Zumindest nicht, um etwas zu programmieren. Um einfach ein paar Programme nacheinander auszuführen, ist es gut, aber nicht wirklich für mehr. Für komplexere Sachen schau dir lieber Powershell an.
Dafür würde ich nicht die Funktion "time /T" benutzen, sondern die Umgebungsvariable %time%. Die hat aber zusätzlich Sekunden und Hudertstelsekunden drinstehen, deshalb musst du sie etwas kürzen:
echo Systemzeit: %time:~0,5%>>test.txt
Naja, klappt zwar beim Ausführen des Batch Scripts, aber in der Datei wird dann nur der Text und nicht die Variablen angezeigt.
Was meinst du mit "in der Datei wird dann nur der Text und nicht die Variablen angezeigt"? Die Zeit, die in der Textdatei steht, aktualisiert sich natürlich nicht, aber es wird trozdem "Systemzeit: 10:16" in die Datei geschrieben
Ja, da steht aber nur "Systemzeit:" ohne den Wert, also die Zeit.
Mein Script:
echo Date: %date /T% >>regis.txt
ja, natürlich, weil du versuchst, die date-Funktion als Variable zu benutzen. Ich hab oben ja auch geschrieben:
echo Systemzeit: %time:~0,5%>>test.txt
Für das Datum geht es dementsprechend mit
echo Date: %date%>>regis.txt
@echo off
rem eine Zeile in eine Datei schreiben...
echo Ich habe einen Hund >"meine Datei.txt"
rem eine Zeile in eine Datei anhängen...
echo Ich habe auch eine Fretchen >>"meine Datei.txt"
pause
ich weiß nicht was Du darüber hinaus noch vorhast...
Wenn das Ganze später auf komplexe Aufgaben hinauslaufen soll kann ich Dir nur empfehlen gleich eine Sprache zu wählen, welch besser als Batch mit Text umgehen kann.
im Moment mag Dir Batch zwar als sehr einfach erscheinen bei Komplexeren Aufgaben kann sich Batch auch in ganz anderem Licht zeigen: https://www.gutefrage.net/frage/batch-text-schnell-ablaufen-lassen#answer-421800895
Du hast bereits Bash erwähnt. Powershell ist gegenwärtig eine der fortschrittlichsten Scriptsprachen.
Wenn Du nicht nur einen "Schnellschuss" in Batch benötigst, lerne besser Powershell.
dafür gibts Pipe Redirects:
Wie mache ich das bspw. wenn ich de Systemzeit ermitteln will und ins Dokument schreiben lasse, das geht ja mit folgendem Skript:
Jetzt wird aber Systemzeit: in Zeile 1 geschrieben und die Zeit in Zeile 2. Wie bekomme ich beides in die selbe Zeile?