70102
Goto Top

Text auslesen mit Zeichen im Ihnalt

ich bekomme Probleme mit dem Sonderzeichen >

Ich möchte per Batch eine Log-Datei auslesen.

Stellt auch kein Problem dar, bis ich an eine Zeile mit dem Inhalt:
ftp> put..... komme

wie bekomme ich diese Zeile als vollständigen Text eingelesen und weiter verarbeitet?

Befehlszeile die ich verarbeiten möchte

echo "%zeile%" >> "c:\log\test.txt"


zeile = ftp> put dateiname

gechrieben wird in die test.txt:
ftp (mehr nicht!!)


die Anführungszeichen haben nichts gebracht.
ein "ausschneiden" des Zeichens würde ich auch akzeptieren


Vielen Dank für Hilfsangebote

Content-Key: 191557

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

Printed on: April 24, 2024 at 13:04 o'clock

Member: Biber
Biber Sep 20, 2012 updated at 16:18:18 (UTC)
Goto Top
Moin SDohle,

um Zeichen, die eine spezielle Bedeutung in der Batch/CMD-Syntax haben (Bsp: ">", "|", "&" etc) als "bedeutungslose Zeichen" zu behandeln, müssen sie mit einem Caret ("^") maskiert werden.

Beispiel/Demo am CMD-Prompt folgt.
Ich habe deine ersten paar Beitragszeilen in eine Textdatei namens d:\temp\testlog.log kopiert.

Um den Text per CMD einzulesen und wieder auszugeben müsste eine CMD-Zeile mit aktivierter "verzögerter Variablenauflösung"/DelayedExpansion laufen, deshalb zur Demo ggf mit
CMD /V:on /k

..eine CMD-Instanz mit dieser Einstellung starten.

D:\temp>for /f "delims=" %i in (d:\temp\testlog.log) do @(set "Zeile=%i" & set "zeile=!zeile:^>=^^^>!" & echo !zeile!>con:)
ich bekomme Probleme mit dem Sonderzeichen >
Ich m÷chte per Batch eine Log-Datei auslesen.
Stellt auch kein Problem dar, bis ich an eine Zeile mit dem Inhalt:
ftp> put..... komme
wie bekomme ich diese Zeile als vollstΣndigen Text eingelesen und weiter verarbeitet?

In einem Batch dann (ungetestet) in etwa so:
@echo off & setlocal enableDelayedExpansion

for /f "delims=" %i in (d:\temp\testlog.log) do (  
   set "Zeile=%%i"   
   Set "zeile=!zeile:^>=^^^>!"   
   echo !zeile!>c:\log\text.txt
)

( ...wenn du ALLE Zeilen haben wolltest, was ich nicht denke)

Grüße
Biber
Member: bastla
bastla Sep 20, 2012 at 16:32:19 (UTC)
Goto Top
... oder alternativ (und sogar getestet face-wink):
@echo off & setlocal
set "Ein=testlog.log"  
set "Aus=text.txt"  

del "%Aus%" 2>nul  
for /f "usebackq delims=" %%i in ("%Ein%") do (  
   set "Zeile=%%i"   
   setlocal enableDelayedExpansion
   echo !Zeile!
   endlocal
)>>"%Aus%"  
Leerzeilen bleiben allerdings auch bei dieser Variante auf der Strecke (was sich im Bedarfsfall noch vermeiden ließe) ...

Grüße
bastla
Mitglied: 70102
70102 Sep 21, 2012 at 05:42:32 (UTC)
Goto Top
Hallo Bastla

hat super funktioniert,
konnte mein Script durch deine Hilfe zum Laufen bekommen..

HERZLICHEN DANK