Anführungszeichen aus .txt Datei löschen
Hi,
ich habe eine TXT Datei und in dieser sind leider vor und hinter manchen Zeilen Anführungszeichen.
also ich könnte es auch von Hand machen, da ich nur den Editor öffnen muss und bei suchen " schreiben muss und bei ersetzen nichts und schon sind sie weg.
auch wenn ich die Eingabeaufforderung starte und die txt datei im DOS Editor starte, kann ich die anführungszeichen so entfernen.
Da muss es doch eine möglichkeit geben, dass ich das irgendwie gebacken bekomme, am besten wäre so ne batch datei ist das damit möglich?
Antwort schreiben
Antwort 1 von batti-batch vom 24.10.2019, 11:01 Options
Hallo Player1987,
Suchen und Ersetzen lassen sich mit einer Batch-Datei erledigen.
Um aber die Möglichkeiten von
Suchen und Ersetzen
zu demonstrieren, habe ich das Beispiel etwas ausgebaut: hier werden Anführungszeichen (") durch Sternchen (*) ersetzt.
Das Programm kannst Du im
SET-Block
ganz leicht Deinen Wünschen anpassen:
SET "datei=Laufwerk_und_Pfad_zu_Deiner_Textdatei"
SET "ausgabe=Laufwerk_und_Pfad_zu_Deiner_Ausgabedatei"
SET "suchzeichen=""
SET "ersetzungszeichen=*"
Wenn Du das Anführungszeichen (") nur entfernen möchtest, ändere die Zeile
SET "ersetzungszeichen=*"
in
SET "ersetzungszeichen="
Hier ist das Batchprogramm:
@ECHO off
SETLOCAL enabledelayedexpansion
REM
REM Testprogramm
REM Ersetzen von Zeichen und Schreiben in eine neue Datei
REM
REM lauffaehig ab Windows 2000
REM
SET "datei=Laufwerk_und_Pfad_zu_Deiner_Textdatei"
SET "ausgabe=Laufwerk_und_Pfad_zu_Deiner_Ausgabedatei"
SET "suchzeichen=""
SET "ersetzungszeichen="
REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ausgabe% (DEL /f %ausgabe% 1>NUL 2>NUL)
REM Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :eof
:ersetzen
REM Das Suchzeichen mit dem Ersetzungsteichen tauschen
SET zeile=!zeile:%suchzeichen%=%ersetzungszeichen%!
REM Ergebnis in die Ausgabedatei schreiben
ECHO !zeile!>>%ausgabe%
GOTO :eof
:eof
Viel Spass beim Testen!
Herzliche Grüße
batti-batch
Antwort 2 von MichaelS vom 24.10.2019, 14:27 Options
also ich habe das jetzt einfach in ein neues txt dokument kopiert und mal versucht, jedoch klappt das leider nicht
@ECHO off
SETLOCAL enabledelayedexpansion
REM
REM Testprogramm
REM Ersetzen von Zeichen und Schreiben in eine neue Datei
REM
REM lauffaehig ab Windows 2000
REM
SET "test.txt=D:\output\"
SET "testneu.txt=D:\output\"
SET "suchzeichen=""
SET "ersetzungszeichen="
REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ausgabe% (DEL /f %ausgabe% 1>NUL 2>NUL)
REM Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :eof
:ersetzen
REM Das Suchzeichen mit dem Ersetzungsteichen tauschen
SET zeile=!zeile:%suchzeichen%=%ersetzungszeichen%!
REM Ergebnis in die Ausgabedatei schreiben
ECHO !zeile!>>%ausgabe%
GOTO :eof
:eof
Antwort 3 von batti-batch vom 24.10.2019, 14:35 Options
Hallo MichaelS,
was genau klappt denn nicht?
Wenn Du den Code in Notepad (das ist der Editor auf Deinem PC; mit einem "normalen" Textprogramm solltest Du es nicht versuchen) kopierst, musst Du diese Datei als *.bat abspeichern. Wähle dazu beim Speichern die Option "Alle Dateien" und gib als Name z.B.
michael.bat
ein.
Diese Datei ist dann als Batch unter DOS lauffähig.
Viel Spass beim Testen!
Herzliche Grüße
batti-batch
Antwort 4 von MichaelS vom 24.10.2019, 15:12 Options
Also als.bat hab ich sie schon benannt.
das problem ist, das dos fenster bzw eingabeaufforderung öffnet nur ganz kurz und dann ist sie wieder weg.
und nichts ist passiert.
Antwort 5 von batti-batch vom 24.10.2019, 15:58 Options
Hallo MichaelS,
versuche, diese Datei in der DOS-Eingabeaufforderung zu starten, mit einem Doppelklick wird sie zwar auch funktionieren, davon ist aber in diesem Fall abzuraten.
Vergiss bitte nicht, die vorher notwendigen Anpassungen an Deine Umgebung vorzunehmen.
Dann starte dieses Programm direkt am DOS-Prompt (also innerhalb des schwarzen DOS-Fensters):
michael.bat [ENTER]
Das Umbenennen von Dateien geht recht schnell...
Viel Spass beim Testen!
Herzliche Grüße
batti-batch
Antwort 6 von MichaelS vom 24.10.2019, 19:13 Options
Hi,
also jetzt hat es geklappt. Nur ein Problem habe ich.
Wenn ich ausgangsdatei und Eingangsdatei als gleiche Datei bezeichne,
dann schreibt er das ohne "" einfach unter den Text mit den "".
Kann ich das noch irgendwie umgehen?
Danke
Antwort 7 von batti-batch vom 24.10.2019, 20:52 Options
Hallo MichaelS,
ich freue mich, das es funktioniert hat.
Das restliche Problem ist sehr heikel, deswegen solltest Du davon die Finger lassen: wenn irgendwas schief geht, wird Deine Ausgangsdatei unbrauchbar (das ist bei Suchen und Ersetzen schnell passiert) - deshalb die Lösung mit einer separaten Ausgabedatei!
Denke einfach daran: Man sollte niemals die Ausgangsdatei verändern.
Die kleine Mühe, nach einer Kontrolle ein Umbenennen vorzunehmen, lohnt sich.
Herzliche Grüße
batti-batch
Antwort 8 von MichaelS vom 25.10.2019, 06:52 Options
also ich denke mal das passt hier auch noch rein. da ihr euch gut mit batch dateien auskennt.
also ich habe folgenden code
@echo off
cls
start D:\test\launch.xls
start D:\test\data\patch.bat
start explorer.exe /e, ""D:\test\output""
:ende
cls
Das Ziel davon soll sein,
das erst die Launch.xls geöffnet wird.
Wenn sie geschlossen wird öffnet sich patch.bat
Und wenn diese fertig ist soll sich der Explorer öffnen und das Verzeichnis D:\test\output anzeigen
DAS FUNKTIONIERT ALLES SUPER,
aber das Problem ist, das die Eingabeaufforderung immernoch offen ist am ende mit der Zeile D:\test\data
das ist ja das Verzeichnis der bat.
kann ich da irgendetwas machen? das sich dieses fenster schliest?
ich habe es schon mit dem Wort exit am ende der Bat versucht (nicht patch.bat) sondern die welche diese startet, jedoch ohne erfolg.
achja die patch.dat ist die datei die die anführungszeichen entfernt, danke nochmals dafür
Antwort 9 von Player1987 vom 25.10.2019, 06:53 Options
oh *Z* jetzt hab ich das account von meinem bruder benutzt.
Sorry