tjanosch
Goto Top

Raute in Textdatei automatisch entfernen

Hallo

Ich habe ein kleines Problem.
Ich habe eine Textdatei in der Rauten stehen.
Diese möchte ich per CMD-Datei (Batch) autom. entfernen lassen, ist das möglich?
Vielen Dank für eure Antworten

MfG
Thomas

Content-Key: 73069

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

Printed on: April 25, 2024 at 02:04 o'clock

Mitglied: 8644
8644 Nov 08, 2007 at 11:41:49 (UTC)
Goto Top
Hi,

wenn es nur eine Datei ist, brauchst du keine batch! Datei im Editor öffnen # durch [LEER] ersetzen, auf "Alle Ersetzen" klicken, fertig.

Psycho
Member: tjanosch
tjanosch Nov 08, 2007 at 11:45:13 (UTC)
Goto Top
Das ist klar.
Es wäre aber nicht schlecht da dies eine Lieferscheindatei ist die in eine Faktura importiert wird,
und der User das ja mal vergessen kann.
D.h. es sollte automatisch funktionieren.
Member: ianuti
ianuti Nov 08, 2007 at 11:59:57 (UTC)
Goto Top
Wo kommt die Text-Datei her ?
Bzw. Wie wird diese Datei erzeugt ?
Vielleicht kann man bereits eine Stufe vorher das Problem abfangen ?
Member: Biber
Biber Nov 08, 2007, updated at Oct 18, 2012 at 16:32:40 (UTC)
Goto Top
Moin tjanosch,

der Grund für die vielen Rückfragen und die scheinbar zögerliche handwerkliche Unterstützung:

1) Batch-Befehle arbeiten ZEILENweise ganz brauchbar - bei einem ZEICHEN-Ersetzen ist eher VBSkript o.ä. angesagt.
Ein aktuelles und auch bei Dir passendes bastla-Beispiel hier:Formatierung eines Textdokumentes wie ein Roboter.

2) Wenn denn nun die eine Datei eine gewollte Exportschnittstelle (Lieferscheindatei) und das andere Programm die Importseite (Faktura) sein soll und Du in dieses -ich zitiere- "automatisch funktionierende" System eine halbmanuelle Manipulation reindrückst, dann bist ab sofort Du die Fehlerquelle Nr.1 bzw. der Schuldige, wenn mal was nicht funktioniert.

Deshalb hat ianuti vollkommen recht - entweder muss sich die Export-Seite mal bewegen und keine "#" mehr rausschieben oder die Import-Seite muss diese "#" schlucken lernen.

Niemals darfst Du den "gleichen" Dateninhalt in zwei Systemen direkt in einer Im/Exportdatei manipulieren.

Grüße
Biber
Member: tjanosch
tjanosch Nov 08, 2007 at 21:03:39 (UTC)
Goto Top
Hallo

Ich weiss das man das normal nicht machen soll, aber aus verschiedenen Gründen will ich das.
Weiss jemand ob und wie das in einer cmd datei geht?
Vielen Dank.

Thomas
Member: Biber
Biber Nov 09, 2007 at 08:30:05 (UTC)
Goto Top
Moin tjanosch,

hast Du den Beitrag gelesen, auf den ich oben verwiesen habe?
Und hältst Du dortige Lösung auch für übertragbar auf Dein Problem?
Oder darfst Du kein VBS einsetzen?

Grüße
Biber
Member: ianuti
ianuti Nov 09, 2007 at 09:14:28 (UTC)
Goto Top
Also , rein mit Batch geht es nicht , aber mit anderen Scripten, wie Perl oder PHP ö.ä. , kann man es machen.
Ala :


...
c:\binpath\php.exe c:\otherpath\datei.php
..


Dazu brauchst du natürlich den Interpreter (hier im Beispiel PHP)
Und die "datei.php" musst duch auch noch schreiben (oder schreiben lassen).

In PHP bin ich relativ fitt, mit präziseren Angaben kann ich dir das Script schreiben.
Member: bastla
bastla Nov 09, 2007 at 12:32:11 (UTC)
Goto Top
Hallo tjanosch!

Um das Ganze abzukürzen: Der folgenden Batch (inkl VBS) sollte alle Rauten ersatzlos entfernen:
@echo off & setlocal
set "Ein=D:\MitRauten.txt"  
set "Aus=D:\OhneRauten.txt"  

set "Cvt=%temp%\ConvSC.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(fso.OpenTextFile("%Ein%",1).ReadAll,"#","")>"%Cvt%"  
cscript //nologo "%Cvt%"  
del "%Cvt%"  

Solltest Du schon kein VBS einsetzen wollen/dürfen, könnte ich mir einen Hinweis auf "sed" vermutlich auch sparen ...

Grüße
bastla
Member: tjanosch
tjanosch Nov 09, 2007 at 13:09:18 (UTC)
Goto Top
Vielen Dank

so funtkionert es.
Jetzt habe ich aber gemerkt das ich einen Fehler gemacht habe, ich will nicht alle Rauten ersetzten sondern alle Anführungszeichen.
Geht das überhaupt? Weil die Anführungszeichen ja immer am Anfang und am Ende stehen.
Vielen Dank.

Gruss
Thomas
Member: Biber
Biber Nov 09, 2007 at 13:31:09 (UTC)
Goto Top
die Anführungszeichen ja immer am Anfang und am Ende stehen.
Am Anfang und Ende der Lieferscheinnummer?
Am Anfang und Ende einer Zeile?
Am Anfang eines Tages?
Am Ende der Welt?

Grüße
Biber
Member: tjanosch
tjanosch Nov 09, 2007 at 13:48:25 (UTC)
Goto Top
Sorry etwas schlecht ausgedrückt.

echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(fso.OpenTextFile("%Ein%",1).ReadAll,"#","")>"%Cvt%"

In diesem Bereich "#" wird ja die Raute ausgetauscht.
Ich muss aber ein " austauschen und nicht eine Raute.
Member: bastla
bastla Nov 09, 2007 at 13:53:10 (UTC)
Goto Top
Hallo tjanosch!

Dann eben
echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(fso.OpenTextFile("%Ein%",1).ReadAll,Chr(34),"")>"%Cvt%"  

Grüße
bastla
Member: tjanosch
tjanosch Nov 12, 2007 at 20:28:13 (UTC)
Goto Top
Hallo bastla

Vielen Vielen Dank.
So passt es perfekt.

Gruss
Thomas