alfabravo
Goto Top

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

Content-Key: 156756

Url: https://administrator.de/contentid/156756

Printed on: April 20, 2024 at 03:04 o'clock

Member: my0name
my0name Dec 10, 2010 at 12:52:00 (UTC)
Goto Top
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
Member: alfabravo
alfabravo Dec 10, 2010 at 13:06:17 (UTC)
Goto Top
Super, hat einwandfrei funktioniert. Vielen Dank für die schnelle Hilfe !!