c20082005
Goto Top

Schreiben eines Strings mit Leerzeichen in eine Datei

Hallo,

nach langem Rum- und Ausprobieren möchte ich Euch um Hilfe bitten für folgendes Problem:
Ich möchte mit einer Batch-Datei eine Datei zeilenweise auslesen, zu dem enthaltenen Text etwas hinzufügen und dann in einer anderen Textdatei abspeichern.
Leider sind in der Textdatei Leerzeichen enthalten.

FOR /F "tokens=*" %%i in (%temp%\1.txt) do call:sub1 "%%i"  
pause&exit

:sub1
set bla=%1
set xxx2="%bla:~7,4%-%bla:~4,2%-%bla:~1,2% %~1"  
>>%temp%\2.txt echo %xxx2%
goto:eof

In 1.txt enthaltener Text:
15.06.2013 13:09 <DIR> ABBA (1975) A\ABBA
11.04.2014 08:45 <DIR> Forever Gold A\ABBA

Somit steht dann in 2.txt
"2013-06-15 15.06.2013 13:09 <DIR> ABBA (1975) A\ABBA"
"2014-04-11 11.04.2014 08:45 <DIR> Forever Gold A\ABBA"

Wie bekomme ich es hin, dass in der Datei 2.txt keine Anführungszeichen stehen?

Gruß

Klaus

Content-ID: 329742

Url: https://administrator.de/forum/schreiben-eines-strings-mit-leerzeichen-in-eine-datei-329742.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

111945
111945 17.02.2017 um 09:17:11 Uhr
Goto Top
Batch ist so Oldschool. Warum geht kein Powershell?

Da wäre es $Var.replace("", " ")

VG
132272
132272 17.02.2017 aktualisiert um 09:21:14 Uhr
Goto Top
Zitat von @c20082005:
Wie bekomme ich es hin, dass in der Datei 2.txt keine Anführungszeichen stehen?
indem du einfach nur das erste Anführungszeichen versetzt (vor die Variable schreibst) face-smile
set "xxx2=%bla:~7,4%-%bla:~4,2%-%bla:~1,2% %~1"   
Gruß
c20082005
c20082005 17.02.2017 um 09:43:28 Uhr
Goto Top
Das geht leider nicht, weil der ECHO-Befehl dann nicht funktioniert.

D:\>set "xxx2=2013-06-15 15.06.2013 13:09 <DIR> ABBA (1975) A\ABBA"
D:\>echo 2013-06-15 15.06.2013 13:09 (1975) A\ABBA 0<DIR 1>ABBA
Das System kann die angegebene Datei nicht finden.

Gruß

Klaus
132272
Lösung 132272 17.02.2017 aktualisiert um 10:13:28 Uhr
Goto Top
Weil die <> Redirector Zeichen in Batch sind die du escapen musst oder alternativ delayed expansion nutzen face-wink
http://www.robvanderwoude.com/escapechars.php

@echo off & setlocal ENABLEDELAYEDEXPANSION
set "test=Hallo das ist ein Test <DIR> demo"  
echo !test!
c20082005
c20082005 17.02.2017 um 10:18:51 Uhr
Goto Top
Mann, Mann, Mann!
Vielen Dank!

Und ich dachte es läge an den Leerzeichen!

Diese ganzen "Sonderzeichen" habe ich durch einen Unterstrich eleminiert.
Hier nochmals zur Vervollständigung der korrekte Code

FOR /F "tokens=*" %%i in (%temp%\1.txt) do call:sub1 "%%i"  
pause&exit

:sub1
set bla=%1
set xxx2="%bla:~7,4%-%bla:~4,2%-%bla:~1,2% %~1"  
set "xxx2=%xxx2:<=_%"  
set "xxx2=%xxx2:>=_%"  
set "xxx2=%xxx2:&=_%"  
>>%temp%\2.txt echo %xxx2%
goto:eof

Danke nochmals und

Gruß

Klaus
132272
132272 17.02.2017 aktualisiert um 10:37:10 Uhr
Goto Top
Tja würde man zur heutigen Zeit auf Powershell setzen hättest du diese kruden Probleme erst gar nicht ;-P und das wäre in PS ein Einzeiler für das was du da machst.