Wie kann ich den ganzen Dateiinhalt einer Datei in eine Batch Variable einlesen?
Ich möchte gerne den Inhalt einer ganzen Datei einlesen, in 1 Variable. Das Ganze soll etwa so Ablaufen:
set /p CODE =< Code.txt (funktioniert nur bei 1. Zeile...)
%CODE% (Ausführung des Codes bzw. des Variableninhaltes)
Bin für Vorschläge offen
2 Antworten
Bernys Ansatz war richtig, allerdings musst du vorher "Setlocal EnableDelayedExpansion" benutzen, damit du die Variable in der FOR-Schleife weiterverarbeiten kannst:
Setlocal EnableDelayedExpansion
set LF=^
FOR /F "delims=" %%A IN (Datei) DO set Inhalt=!Inhalt!!LF!%%A
echo !Inhalt!
Das "LF" dient dazu, Zeilenumbrücke mit zu übergeben. Die beiden Zeilen darunter müssen frei bleiben, damit es funktioniert.
Das Verwenden von Variablen als Code geht nur mit %-Zeichen, da funktionieren !-Zeichen nicht.
Das Speichern von Text mit Zeilenumbruch ist aber nur in einer !-Variable möglich, nicht in %-Variablen.. Dir bleibt nur, jede Zeile mit einem & zu verknüpfen, wodurch aber einige Funktionen des Codes verloren gehen könnten:
Setlocal EnableDelayedExpansion
FOR /F "delims=" %%A IN (Datei) DO set Inhalt=!Inhalt!%%A^&
set Inhalt=!Inhalt!
%Inhalt%
Alternativ kannst du die auszulesende Datei als .bat speichern und dann per CALL aufrufen:
call Datei.bat
Die Variablen der Hauptdatei werden mitübergeben, allerdings kannst du keine Variablen speichern lassen.
set content=
for /f "delims=" %%i in ('filename') do set content=%content% %%i
Das liest leider nur die letzte Zeile ein, daher ist
%CODE%
unmöglich...
Das ausführen des Codes durch:
geht leider nicht, irgendwelche Ideen?