Wie kann ich den ganzen Dateiinhalt einer Datei in eine Batch Variable einlesen?

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.


Proximus553 
Fragesteller
 18.03.2016, 16:15

Das ausführen des Codes durch:

!Inhalt!

geht leider nicht, irgendwelche Ideen?

0
S1r1us13  18.03.2016, 20:42
@Proximus553

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.

0
set content=
for /f "delims=" %%i in ('filename') do set content=%content% %%i

Proximus553 
Fragesteller
 17.03.2016, 14:39

Das liest leider nur die letzte Zeile ein, daher ist

%CODE%

unmöglich...

0