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 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
Please also mark the comments that contributed to the solution of the article
Content-Key: 156756
Url: https://administrator.de/contentid/156756
Printed on: April 20, 2024 at 03:04 o'clock
2 Comments
Latest comment
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