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-Key: 329742

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

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

Mitglied: 111945
111945 Feb 17, 2017 at 08:17:11 (UTC)
Goto Top
Batch ist so Oldschool. Warum geht kein Powershell?

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

VG
Mitglied: 132272
132272 Feb 17, 2017 updated at 08:21:14 (UTC)
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ß
Member: c20082005
c20082005 Feb 17, 2017 at 08:43:28 (UTC)
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
Mitglied: 132272
Solution 132272 Feb 17, 2017 updated at 09:13:28 (UTC)
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!
Member: c20082005
c20082005 Feb 17, 2017 at 09:18:51 (UTC)
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
Mitglied: 132272
132272 Feb 17, 2017 updated at 09:37:10 (UTC)
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.