pbelcl
Goto Top

Anführungszeichen per Batch aus Datei löschen

noch nicht ganz klar..

Hallo Leute,

Vorerst mal ein

echo "hallo" >all

denn ich bin neu hier!

Ich habe Eure Beiträge zum entfernen von Anführungszeichen per BATCH in einer Textdate gelesen aber leider habe ich einfach noch keine Lösung zusammengebracht.

Alle beschriebenen Codezeilen haben bei mit nicht funktioniertface-sad

Ich habe eine Textdatei die solche Zeilen enthält:

CAB;Speicherkarte\"2a Pocket PC.cabs\Security Check.WM5\Sec_aus.CAB";
CAB;Speicherkarte\"2a Pocket PC.cabs\Ident Eintrag\HTC_Trinity_Ident.cab";
u.s.w

und möchte per BATCH ALLE Anführungszeichen aus der Datei entfernen und dann wieder eine Datei schreiben die so aussieht:

CAB;Speicherkarte\2a Pocket PC.cabs\Security Check.WM5\Sec_aus.CAB;
CAB;Speicherkarte\2a Pocket PC.cabs\Ident Eintrag\HTC_Trinity_Ident.cab;

Hat jemand von Euch eine Idee oder ein paar Beispielcodezeilen für mich??

Content-Key: 49523

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

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

Member: Biber
Biber Jan 22, 2007 at 17:16:56 (UTC)
Goto Top
Moin pbelcl,

willkommen im Forum.

Eine Variante wäre das zeilenweise Speichern in eine Variable und dem anschliessenden Ersetzen aller Anführungszeichen durch "nichts".
(Oder "nyscht", wie geTuemII schreiben würde....).
Vorgekaspert am CMD-Prompt
(=18:09:18  D:\temp=)
>type f:\administrator\pbelcl.txt
CAB;Speicherkarte\"2a Pocket PC.cabs\Security Check.WM5\Sec_aus.CAB";  
CAB;Speicherkarte\"2a Pocket PC.cabs\Ident Eintrag\HTC_Trinity_Ident.cab";  

(=18:09:19  D:\temp=)
>for /f "delims=" %i in (f:\administrator\pbelcl.txt) do @set "line=%i" & @echo !line:"=!  
CAB;Speicherkarte\2a Pocket PC.cabs\Security Check.WM5\Sec_aus.CAB;
CAB;Speicherkarte\2a Pocket PC.cabs\Ident Eintrag\HTC_Trinity_Ident.cab;

Im Batch:
@echo off & setlocal enableDelayedExpansion
...
if exist kopieOhneAnfüzeichen.txt del kopieOhneAnfüzeichen.txt
for /f "delims=" %%i in (originaldatei.txt) do (  
   set "line=%%i"   
   echo !line:"=!>>kopieOhneAnfüzeichen.txt  
)
REM ggf ein copy /y kopieOhneAnfüzeichen.txt originaldatei.txt
...

HTH
Biber
Member: pbelcl
pbelcl Jan 23, 2007 at 05:29:18 (UTC)
Goto Top
Hallo Biber,

Danke für die schnelle Antwort!
Hab das mal ausprobiert und in meinem Batch steht folgendes:

@echo off & setlocal enableDelayedExpansion

for /f "delims=" %%i in (source.txt) do (
set "line=%%i"
echo !line:"=!>>target.txt
)

Ich sehe im Fenster daß es richtig durchgeführt wird aber es wird keine Date target.txt erzeugt!?
Hab ich was falsch zusammengebaut?
Member: Biber
Biber Jan 23, 2007 at 10:14:22 (UTC)
Goto Top
Moin pbelcl,

nein, war mein Fehler...wieder mal nicht getestet.
Jedenfalls nicht die Umleitung - ich hab es natürlich nur auf dem Bildschirm angeschaut.

In diesem Fall versagt der "Echo ...>>datei" Befehl wegen des Anführungszeichens.

Mach es lieber so:
::---Pbelcl.bat
@echo off & setlocal enableDelayedExpansion

for /f "delims=" %%i in (source.txt) do (  
set "line=%%i"  
echo !line:"=!  
)

Und beim Aufruf umleiten.
pbelcl.bat>target.txt

Gruß
Biber
Member: pbelcl
pbelcl Jan 23, 2007 at 13:09:22 (UTC)
Goto Top
Habs gerade probiert, hat funktioniert!
Hatte eh so eine Ahnung daß die " da ein Problem sind face-smile

Mit Deinem Tip ist es mir übrigens gelungen die Anführungszeichen erst gar nicht entstehen zu lassen!
Ich mußte eine Variable die einen Pfad (mit Leerzeichen) enthält über einen call in eine weitere Batchdatei übernehmen. Und damit die Variable komplett ankommt mußte ich sie natürlich unter "" setzen.

Hab diene Codezeilen etwas abgewandelt in die Ursprungsdatei eingebaut und nun klappt es auch ohne den CALL.

Danke für Deine Hilfe. Ist schon toll was man mit BATCH alles machen kann ....
Member: Biber
Biber Feb 01, 2007 at 13:50:50 (UTC)
Goto Top
Beitrag wieder geöffnet auf Antrag von User "thats".

Müsste sich gleich selber äußern...

Biber
Member: thats
thats Feb 01, 2007 at 15:15:03 (UTC)
Goto Top
hallo an alle,

vielen dank fürs wieder öffnen des threads (:

hab so ein ähnliches problem, dass ich eine textdatei auslese und die anführungszeichen gleich löschen lassen will.

hab das auch scho gleich versucht wie oben beschrieben:

@echo off & setlocal enableDelayedExpansion

batch.bat>kopie.txt

if exist kopie.txt del kopie.txt
for /f "delims=" %%i in (test.txt) do (  
   set "line=%%i"   
   echo !line:"=!  
)

bekomm allerdings immer die meldung "Maximale Rekursionstiefe für SETLOCAL erreicht" im Dos-Fenster. das macht er allerdings in einer endlosschleife.

und meine kopie.txt ist leider leer.

danke für die hilfe (:

lg chris
Member: Biber
Biber Feb 01, 2007 at 15:59:37 (UTC)
Goto Top
Moin thats,

Du musst es wie folgt umstellen:

::------Das <b>ist</b> die Datei  Batch.bat----
@echo off & setlocal enableDelayedExpansion
REM brauchst Du nicht ...if exist kopie.txt del kopie.txt
for /f "delims=" %%i in (test.txt) do (  
   set "line=%%i"   
   echo !line:"=!  
)
::-------Ende der Datei Batch.bat

und aufrufen vom CMD-Prompt musst Du die so:
batch.bat>kopie.txt

Oder erstmal zum Testen ohne Umleitung in eine Datei Kopie.txt
batch.bat

HTH
Biber
Member: thats
thats Feb 05, 2007 at 08:01:38 (UTC)
Goto Top
ha super, so läufts jetzt auch. glaub mein fehler war auch einfach der, dass ich die umleitung in die batch-datei mit rein geschrieben habe und nicht über die konsole aufgerufen habe.

hab jetzt nur mehr ein datumsproblem, dass ich mir die datei raussuchen muss aus dateien:
"Protokolldatei von Betriebstag %tag%.TXT" und hier solls dann die datei mit dem heutigen tag sein.

so funktionierts allerdings nicht:

@echo off & setlocal enableDelayedExpansion
set tag=%date:~-10,2%

for /f "delims=" %%i in (Protokolldatei von Betriebstag %tag%.TXT) do (  
   set "line=%%i"   
   echo !line:"=!  
)


del Protokolldatei von Betriebstag %tag%.TXT
ren kopie.txt Protokolldatei von Betriebstag %tag%.TXT
Member: Biber
Biber Feb 06, 2007 at 18:55:30 (UTC)
Goto Top
Moin thats,

nicht hauen jetzt, aber.... nun sind wieder ein paar Anführungszeichen zu wenig drin...

Die Anführungszeichen müssen bei CMD-Anweisungen verwendet werden, wenn einer der Parameter aus mehreren Worten besteht. Also z.B. Dateinamen mit Leerzeichen.

In Deiner Skizze dann also:
@echo off & setlocal enableDelayedExpansion
set tag=%date:~-10,2%
REM ......ich hoffe, das stimmt... bei mir kommt da nichts raus, weil %date%-Format bei mir "06.02.2007" ist.  
REM Nächste Zeile: Der Dateiname in Anführungszeichen
for /f "delims=" %%i in ("Protokolldatei von Betriebstag %tag%.TXT") do (  
   set "line=%%i"   
   echo !line:"=!  
)

REM NACH DEM TESTEN DAS REM ENTFERNEN ---auch hier: "Dateiname in Anfü-Zeichen"  
REM del "Protokolldatei von Betriebstag %tag%.TXT"  
REM ren kopie.txt "Protokolldatei von Betriebstag %tag%.TXT"  

So in etwa...

Gruss Biber
Member: thats
thats Feb 07, 2007 at 12:04:27 (UTC)
Goto Top
hallo biber,

danke. habs einstweilen so gelöst:

aufruf.bat
if exist kopie.txt del kopie.txt

set tag=%date:~-10,2%
set pfad="C:\Dokumente und Einstellungen\ibv_stern\Desktop"  
set datei="Protokolldatei von Betriebstag "%tag%".TXT"  

copy %pfad%\%datei% %pfad%\kopie1.txt

batch.bat>kopie.txt



batch.bat
@echo off & setlocal enableDelayedExpansion

set tag=%date:~-10,2%
set pfad="C:\Dokumente und Einstellungen\ibv_stern\Desktop"  
set datei="Protokolldatei von Betriebstag "%tag%".TXT"  

for /f "delims=" %%i in (kopie1.txt) do (  
   set "line=%%i"   
   echo !line:"=!  
)

copy %pfad%\kopie.txt %pfad%\kopie1.txt
del %datei%
ren kopie1.txt %datei%
del kopie.txt

und ich muss sagen, es funktioniert hervorragend beim testen. (:

grüße thats
Member: Biber
Biber Feb 07, 2007 at 12:39:28 (UTC)
Goto Top
Freut mich, thats,

dann schliesse ich den Beitrag hier erstmal wieder.

Gruss
Biber