Wie können Sie eine Datei (Text oder Binärdatei) aus einer Batchdatei lesen? Gibt es eine Möglichkeit, es im Binär- oder Textmodus zu lesen?
file
batch-file
Lucas Gabriel Sánchez
quelle
quelle
TYPE [fileName]
für MS-Dos verwenden.Antworten:
Sie können den Befehl for verwenden:
Art
an der Eingabeaufforderung. Sie können auch INI-Dateien analysieren !
quelle
for /?
dem Befehl wird jede Zeile in myfile.txt analysiert, wobei Zeilen, die mit einem Semikolon beginnen, ignoriert werden und das 2. und 3. Token von jeder Zeile an den for-Body übergeben werden, wobei Token durch Kommas und / oder Leerzeichen getrennt sind.Unter cmd.exe im NT-Stil können Sie die Zeilen einer Textdatei mit durchlaufen
Geben Sie an der Eingabeaufforderung "help for" ein, um weitere Informationen zu erhalten. (Ich weiß nicht, ob das unter dem von Ihnen verwendeten "DOS" funktioniert.)
quelle
%%i
.Die FOR-LOOP funktioniert im Allgemeinen, es gibt jedoch einige Probleme. Das FOR akzeptiert keine Leerzeilen und Zeilen mit mehr als ~ 8190 sind problematisch. Die Erweiterung funktioniert nur dann zuverlässig, wenn die verzögerte Erweiterung deaktiviert ist.
Der Nachweis von CR / LF gegenüber einfachem LF scheint ebenfalls etwas kompliziert zu sein.
Auch NUL-Zeichen sind problematisch, da eine FOR-Schleife das Lesen sofort abbricht.
Ein direktes binäres Lesen scheint daher nahezu unmöglich.
Das Problem mit leeren Zeilen kann mit einem Trick gelöst werden. Stellen Sie jeder Zeile mit dem Befehl findstr eine Zeilennummer voran und entfernen Sie nach dem Lesen das Präfix.
Das Umschalten zwischen aktivierter und deaktivierter verzögerter Erweiterung ist für das sichere Arbeiten mit Zeichenfolgen wie
!
oder erforderlich^^^xy!z
. Dies liegtdaran, dass die Zeile
set "var=%%a"
nur mit DisabledDelayedExpansion sicher ist. Andernfalls werden Ausrufezeichen entfernt und die Carets als (sekundäre) Escape-Zeichen verwendet und auch entfernt.Die Verwendung der Variablen
var
ist jedoch nur mit EnabledDelayedExpansion sicher , da selbst acall %%var%%
mit Inhalten wie fehlschlägt"&"&
.BEARBEITEN: Set / p-Variante hinzugefügt
Es gibt eine zweite Möglichkeit, eine Datei mit zu lesen
set /p
. Die einzigen Nachteile sind, dass sie auf ~ 1024 Zeichen pro Zeile begrenzt ist und Steuerzeichen am Zeilenende entfernt werden.Der Vorteil ist jedoch, dass Sie das verzögerte Umschalten nicht benötigen und es einfacher ist, Werte in Variablen zu speichern
Zum Lesen von "binär" in eine Hex-Darstellung
Sie können sich SO ansehen : Konvertieren einer Binärdatei in eine HEX-Darstellung mithilfe einer Batch-Datei
quelle
set /p
. Ich habeset /p value=< result.txt
die erste Zeile aus einer Textdatei0x1A
? verhältfor /F
sich genauso wie bei NUL (0x00
) Zeichen?:
oder;
oder beginnen!
Eine sehr einfache Möglichkeit ist die Verwendung des folgenden Befehls:
Dadurch wird nur die erste Textzeile in einer Textdatei angezeigt. Die andere Möglichkeit besteht darin, den folgenden Befehl zu verwenden:
Dadurch werden alle Daten in der Textdatei auf dem Bildschirm angezeigt. Hoffe das hilft!
quelle
Nun, es gibt viele verschiedene Möglichkeiten, aber wenn Sie den Text nur ANZEIGEN und nirgendwo speichern möchten, verwenden Sie einfach:
findstr /v "randomtextthatnoonewilluse" filename.txt
quelle
Korrigierter Code:
quelle
eol=
unddelims=
sind überflüssig,set line=%%a
sollten Anführungszeichen verwenden und ohne den verzögerten Erweiterungsmodus umzuschalten, kann der Code keine Ausrufezeichen lesenDadurch wird der Inhalt von 1.csv in der Variablen 'a' gespeichert:
quelle
type 1.csv
, führt also%a%
nur diesen Befehl aus. Überprüfen Sie mitset a
Ein Code, der den Inhalt der Datei myfile.txt auf dem Bildschirm anzeigt
setze% filecontent% = 0
type% filename% >>% filecontent%
echo% filecontent%
quelle