Ausgabe einer Variablen die das UND-Zeichen enthält mittels echo-Befehl
Hallo Forum!
Ich habe ein Problem mit dem nachfolgenden Skript.
Ich möchte eine Textdatei (Datei.txt) splitten:
Steht in Datei.txt am Anfang der Zeile die "1" wird der Satz in Datei1.txt geschrieben.
Steht in Datei.txt am Anfang der Zeile die "2" wird der Satz in Datei2.txt geschrieben.
Das Problem ist, dass der Inhalt in Datei.txt auch vereinzelt das "&"-Zeichen enthält.
Bei Ausgabe der Variablen über echo>> wird das Zeichen ungewollt als Kommando interpretiert.
Gibt es da eine Lösung?
@echo off
FOR /F "usebackq delims=" %%L in ("C:\Datei.txt") do call :ProcessLine "%%L"
:ProcessLine
set "Line=%~1"
set "erstesZeichen=%Line:~0,1%"
IF %erstesZeichen% == 1 echo>> "C:\Datei1.txt" %Line%
IF %erstesZeichen% == 2 echo>> "C:\Datei2.txt" %Line%
goto :eof
Ich habe ein Problem mit dem nachfolgenden Skript.
Ich möchte eine Textdatei (Datei.txt) splitten:
Steht in Datei.txt am Anfang der Zeile die "1" wird der Satz in Datei1.txt geschrieben.
Steht in Datei.txt am Anfang der Zeile die "2" wird der Satz in Datei2.txt geschrieben.
Das Problem ist, dass der Inhalt in Datei.txt auch vereinzelt das "&"-Zeichen enthält.
Bei Ausgabe der Variablen über echo>> wird das Zeichen ungewollt als Kommando interpretiert.
Gibt es da eine Lösung?
@echo off
FOR /F "usebackq delims=" %%L in ("C:\Datei.txt") do call :ProcessLine "%%L"
:ProcessLine
set "Line=%~1"
set "erstesZeichen=%Line:~0,1%"
IF %erstesZeichen% == 1 echo>> "C:\Datei1.txt" %Line%
IF %erstesZeichen% == 2 echo>> "C:\Datei2.txt" %Line%
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156756
Url: https://administrator.de/contentid/156756
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
2 Kommentare
Neuester Kommentar
Probier mal das hier:
@echo off
FOR /F "usebackq delims=" %%L in ("C:\Datei.txt") do call :ProcessLine "%%L"
:ProcessLine
set "Line=%~1"
set "erstesZeichen=%Line:~0,1%"
set "Line=%Line:&=^&%"
IF %erstesZeichen% == 1 echo>> "C:\Datei1.txt" %Line%
IF %erstesZeichen% == 2 echo>> "C:\Datei2.txt" %Line%
goto :eof
Hab es mal hiermit erweitert:
set "Line=%Line:&=^&%"
Damit wird & in der Variablen %Line% gesucht und durch ^& ersetzt, was im Prinzip escape bedeutet
@echo off
FOR /F "usebackq delims=" %%L in ("C:\Datei.txt") do call :ProcessLine "%%L"
:ProcessLine
set "Line=%~1"
set "erstesZeichen=%Line:~0,1%"
set "Line=%Line:&=^&%"
IF %erstesZeichen% == 1 echo>> "C:\Datei1.txt" %Line%
IF %erstesZeichen% == 2 echo>> "C:\Datei2.txt" %Line%
goto :eof
Hab es mal hiermit erweitert:
set "Line=%Line:&=^&%"
Damit wird & in der Variablen %Line% gesucht und durch ^& ersetzt, was im Prinzip escape bedeutet