e.wind
Goto Top

Zeichen an eine CSV Datei anhängen

Hallo zusammen,

nachdem ich mich fast tot gesucht habe nach einer Lösung, muss ich jetzt doch anderen Menschen auf den Keks gehen und hoffen das sie mehr davon verstehen als ich, was vermutlich nicht schwer ist face-wink

Ich habe 3 .csv Dateien die am Anfang alle gleich heißen nämlich GLS_GEPARD_*.csv an diese .csv Dateien muss ich einfach nur ;1 anhängen und an einen anderen Ort verschieben. Aber Wie??

Ich hoffe Ihr könnt mir helfen!

P.s.: die Dateien sind ; getrennt und es wäre das 16. Feld wo die Info rein muss.

Content-Key: 195475

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

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

Member: Biber
Biber Dec 06, 2012 updated at 18:33:16 (UTC)
Goto Top
Moin E.Wind,

willkommen im Forum.

Wenn es eine einmalige Aktion ist, begib dich an den CMD-Prompt und gibt dreimal leicht variiert ein:

C:\Users\Biber>For /f "usebackq delims=" %i in ("X:\y\z\GLS_GEPARD001.csv") do @echo %i;1>>D:\NeuerPfad\NeuerName001.csv

Die kleine Variation ist jeweils die Änderung der GLS_GEPARDxxx und der NeuerName001.csv.

GGf musst du noch ein "CHCP 1252" vorwegschicken, falls die .csv-Dateien Windows-ANSI-Umlaute enthalten.

Grüße
Biber
Member: E.Wind
E.Wind Dec 06, 2012 at 15:25:54 (UTC)
Goto Top
Hallo Biber,

leider ist das ganze keine einmalige Sache, das sind im Großen und Ganzen die Adressdateien die aus unserem Versandtsystem an das GLS Programm übergeben werden. Es gibt halt 3 Mandanten wo das ganze dann letztendlich so aussieht:

GLS_GEPARD_Mandant1_Auftragsnummer.csv
GLS_GEPARD_Mandant2_Auftragsnummer.csv
GLS_GEPARD_Mandant3_Auftragsnummer.csv

Der Anfang und die 3 Mandantennummern sind immer gleich, die Auftragsnummer wird für jeden Auftrag natürlich neu generiert. Er müsste also grundsätzlich in dem Ordner in dem die Versandsoftware die .CSV platziert permanent suchen ob eine dieser 3 Dateien vorhanden ist, den Dateinamen des Originals kopieren und am Speicherort für den Import genauso wieder ablegen, nur um ;1 auf Arbeitsplatz 1, ;2 auf Station 2 und ;3 auf Platz 3 anhängen, damit die GLS Software weiß auf welcher Arbeitsstation bzw. auf welchem Drucker das Paketlable gedruckt werden soll.
Member: Pjordorf
Pjordorf Dec 06, 2012 at 17:29:24 (UTC)
Goto Top
Hallo,

Zitat von @E.Wind:
leider ist das ganze keine einmalige Sache
Batchdateien speichern und mehrmals benutzen? face-smile

damit die GLS Software weiß auf welcher Arbeitsstation bzw. auf welchem Drucker das Paketlable gedruckt werden soll.
Jeweils eine Batchdatei für einen Mandanten nehmen ist zwar unschön (im Sinne von Batchpuristen) aber löst dein Problem, oder? Dein Quelldateiname "GLS_GEPARD_Mandant3_*.csv" ist doch schon eindeutig und in jeweils einer eigenen Batchdatei leicht zu verwenden.

Gruß,
Peter
Member: E.Wind
E.Wind Dec 07, 2012 at 07:27:26 (UTC)
Goto Top
Guten Morgen,

danke erstmal für die gute Beteiligung!

@Pjordorf: Leider ist es so, das ich das ganze im Hintergrund laufen lassen muss also Quasi endlos. Grundsätzlich muss die Datei auf 3+ Rechnern ausgeführt werden und dort immer Prüfen ob eine der CSV Dateien vorhanden ist. Ist das der Fall dann muss die Batch das Zeichen für den jeweiligen Rechner anhängen und die Datei unter Beibehalten des original Dateinamens an einen anderen Speicherort verschieben oder dort neu speichern und das Original löschen. Ich will eben genau deshalb NICHT 3 Dateien im Hintergrund haben die Prüfen, Anfügen etc. sondern eine die alles macht.

Danke für Die Hilfe!

Grüße
Eric
Member: Pjordorf
Pjordorf Dec 07, 2012, updated at Dec 10, 2012 at 21:58:17 (UTC)
Goto Top
Hallo,

[Änderung nach Kommentare vom TO]

Zitat von @E.Wind:
Du wunderst dich warum so wenig hier passiert? Ganz einfach, deine Frage bis jetzt war ja nichts besonderes und hier im Forum schon hundertemal durchexerziert. Und jetzt immer wieder diese "ach so - da kommt" noch und dann dein "das brauche ich auch noch" kann hier schon keiner mehr Lesen. Warum nicht am Anfang das sagen was hier jemand braucht um DEIN Problem zu verstehen und dir vielleicht einen Ansatz oder gar eine Lösung bieten zu können?

das ganze im Hintergrund laufen lassen muss also Quasi endlos.
Aha, batchdatei im Hintergrund und das dann auch noch endlos. Aha. So eine dicke CPU gibt es nicht was das kann. 100% systemauslast.

Grundsätzlich muss die Datei auf 3+ Rechnern ausgeführt
Auch hier werden sich andere Fragen, "Was soll das denn jetzt? Eine Batch auf 3+ Rechner welche alle die gleiche Dateien bearbeiten?"

dann muss die Batch das Zeichen für den jeweiligen Rechner anhängen

Jetzt auf einmal das Zeichen für den Rechner? Gestern war es noch nur das zeichen für den Mandant!

deshalb NICHT 3 Dateien im Hintergrund haben die Prüfen, Anfügen etc. sondern eine die alles macht.
Und was hälst du davon dir einen Programmier anzuschaffen der dir gegen einer entsprechenden Bezahlung dir deine Wünsche und alle anschließenden Änderung dir Programmiert? Dem kannst du dann immer wieder mit nachträge kommen und er kann dir dann immer wieder nachträglich neue Rechnungen schreiben. Was soll das hier?

Danke für Die Hilfe!
Unter diesen gegebenheiten verzichte ich drauf.

Gruß,
Peter

PS. Hättest du (hast du aber nicht) von vornherein hier alles auf den Tisch gelegt, hättest du vermutlich schon eine lauffähige Lösunge erhalten.

[/Änderung]
Member: TsukiSan
TsukiSan Dec 07, 2012 at 11:08:11 (UTC)
Goto Top
Hallo Eric,

ich kann mich Pjordorf nur anschliessen (hilft nicht direkt, bei deiner Problemlösung).
Hier im Forum gibt es viele kluge Köpfe, die bei richtiger Fragestellung schon einen (mindestens) lauffähigen Ansatz geliefert hätten können.
Die hast du jetzt aber schon sehr verwirrt.
Bitte daran denken, dass alle sich im Moment auch mit dem "Was kaufe ich zu Weihnachten" auseinander setzen und die Köpfe eh schon rauchen face-wink

Also ich würde mal vorschlagen, du beschreibst dein Vorhaben nochmal ganz ganz ganz genau und eventuell kommen die richtigen Ansätze dann.

Gruss
Tsuki
Member: E.Wind
E.Wind Dec 07, 2012 at 11:17:32 (UTC)
Goto Top
Hallo Peter,

das ist leider anders rüber gekommen als Gedacht! Ich habe mich wirklich darüber gefreut, das gleich 2 Leute mehr oder weniger DIREKT auf meinen Beitrag geantwortet haben, ich war davon ausgegangen, das es vermutlich so 3-4 Tage dauert bis überhaupt jemand sich das ganze mal anschaut und dann eine Antwort schreibt, die evtl wesentlich weniger zur Lösung beiträgt als das was Ihr mir geantwortet habt.

Ich bitte euch wirklich alle um Entschuldigung, wenn das anders rüber gekommen ist.

Vermutlich habe ich mein Problem wirklich nicht sehr gut erklärt, deshalb trotzdem nochmal ein Versuch:

Ich habe derzeit 3 Rechner auf denen Verpackt wird. Auf jedem der 3 Rechner läuft das GLS Programm und eine Schnittstelle aus dem Versandprogramm, welches mit die GLS Pollingdatei generiert. Damit ich das GLS Programm auf automatischen Import stellen kann, muss ich an die CSV aus dem Versandprogramm ein Zeichen anhängen, z.B. 1 damit er weiß welchen Rechner das grade gepollte Dokument ausdrucken muss. Wenn ich dieses Zeichen nicht anhänge dann wird das Dokument halt Simultan auf 3 Rechner bearbeitet und ausgedruckt.

Da wir für 3 Firmen Versand haben, gibt es diese 3 Dateien, wo er prüfen muss ob die da ist. Im Grunde kann man das vermutlich etwas vereinfach in dem man sagt: prüfe ob eine csv da ist, wenn ja hänge das Zeichen an und verschiebe es unter beibehaltung des namens nach von A nach B

Wie gesagt, ich bitte vielmals um Entschuldigung wenn das was ich vorher beschrieben war, zum einen schlecht Beschrieben und dann auch noch missverständlich formuliert war.

Grüße
Eric
Member: TsukiSan
TsukiSan Dec 07, 2012 at 11:28:28 (UTC)
Goto Top
Hallo Eric,

vermutlich wird's mit Batch etwas "resourcenunfreundlich"!
Du musst dir da wirklich was anderes überlegen.
Mit VBS könnte man etwas tricksen, indem man dem Script immer "Ruhepausen" verpasst.

Zum allgemeinen Verständnis:
1) 3 Rechner
2) in einem bestimmten Pfad wird unter bestimmten Voraussetzungen eine Datei angelegt
3) Diese soll einen Index bekommen: Im Dateinamen oder am Ende in der Datei?
4) Dann soll diese Datei - falls erstellt - irgendwo hinkopiert werden und auf dem Originalrechner gelöscht werden?

Gruss
Tsuki
Member: E.Wind
E.Wind Dec 07, 2012 updated at 11:38:14 (UTC)
Goto Top
Hallo Tsuki,

1) 3 Rechner
=> Korrekt
2) in einem bestimmten Pfad wird unter bestimmten Voraussetzungen eine Datei angelegt
=> auf C:\Polling\Export\ wird zu einem Zeitpunkt eine csv generiert, diese kommt von unserem Versendertool
3) Diese soll einen Index bekommen: Im Dateinamen oder am Ende in der Datei?
=> innerhalb der .csv soll eine 1 auf PC 1, eine 2 auf PC 2 usw. angehängt werden, quasi als letztes Feld
4) Dann soll diese Datei - falls erstellt - irgendwo hinkopiert werden und auf dem Originalrechner gelöscht werden?
=> Wenn eine der Dateien vorhanden ist, soll er die Zahl anhängen, speichern und die Datei nach C:\Polling\
verschieben.

Diese Datei muss auf jedem Rechner separat laufen, da die Dateien, wie man sieht, immer Lokal erzeugt werden.


Vielen dank für Deine Hilfe.

Grüße Eric
Member: TsukiSan
TsukiSan Dec 07, 2012 updated at 13:06:52 (UTC)
Goto Top
Hallo Eric,

ich könnte mir das in VBS grob so vorstellen, zu lösen:
Dim FSO, Ordner
Dim OriginalPfad, Rennt1
Dim DateiFragment
Dim Starter
Dim RechnerNummer

set FSO = createobject("Scripting.FileSystemObject")  

OriginalPfad = "C:\Polling\Export\"  
AblageDatei = "C:\Polling\"  
DateiFragment = "GLS_GEPARD"  
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen  

Set Ordner = FSO.GetFolder(OriginalPfad)

Starter = 1

Do While Starter = 1

For Each File In Ordner.Files
    	Pfadangabe = File.Path
       	temp = Split(Pfadangabe,DateiFragment)
	If Ubound(temp) > 0 then
		Set MeineDatei = FSO.OpenTextFile(Pfadangabe, 8)
		MeineDatei.WriteLine (RechnerNummer)
		MeineDatei.close
	FSO.CopyFile Pfadangabe, AblageDatei, True
	FSO.DeleteFile(Pfadangabe)
	End If
		
Next

Wscript.Sleep 10000

Loop

Dieses VBS-Script läuft ständig und legt eine 10-sekündige Pause nach jedem Durchlauf ein (Wscript.Sleep 10000[ms]). Es sucht im Originalpfad nach einer Datei, welche im Anfang die besagte Benamung hat (DateiFragment = "GLS_GEPARD_Mandant") und wenn dem so ist, diese Datei am Ende die Nummer vom Rechner (auf welchem der Script gerade ausgeführt wird -> muss man händisch ins Script schreiben!) anfügt, dann nach AblageDatei kopiert und zum Schluss umbenennt nach DONE. Das kann man noch klären, was genau da passieren soll.

soweit erst einmal. Schau mal, ob das in deine Richtung geht, was du umsetzen möchtest.

Gruss
Tsuki

[Edit]
Zeile28 geändert
von: FSO.MoveFile Pfadangabe , OriginalPfad & "Done"
nach: FSO.DeleteFile(Pfadangabe)

Zeile11 angepasst (verkürzt)

Zeile23 angepasst -> >0 anstelle von >1
[/Edit]
Member: E.Wind
E.Wind Dec 07, 2012 at 12:05:22 (UTC)
Goto Top
Hallo Tsuki,

ich denke man müsste es noch etwas verfeinern, aber grundsätzlich passt es. Mein Problem ist halt folgendes:

Datei eins heißt: GLS_GEPARD_7299_6462211
Datei zwei heißt: GLS_GEPARD_9523_33813
Datei drei heißt: GLS_GEPARD_1152_899561

Die ersten 11 Zeichen des Dateinamens sind immer Identisch, dann kommt die 4-stellige Kunden-ID und der rest ab xxxx_ ändert sich mit jeder Datei.

Geht das überhaupt, das er das dann verarbeitet? Ich kenne mich mit VBS leider nicht wirklich aus.

Danke und Gruß
Eric
Member: TsukiSan
TsukiSan Dec 07, 2012 at 12:17:40 (UTC)
Goto Top
Hallo Eric,

gehen tut einiges in VBS, aber nicht alles face-wink.
Dein Vorhaben lässt sich sicher mit VBS umsetzen.
Zwei Fragen ergeben sich für mich:
1) sind in dem Ordner nur diese 3 Dateien vorhanden?
2) was soll mit diesen Dateien passieren, nachdem diese bearbeitet und
kopiert worden sind?

Gruss
Tsuki
Member: E.Wind
E.Wind Dec 07, 2012 at 12:30:11 (UTC)
Goto Top
Hallo Tsuki,

also in dem Ordner Export soll sich eigentlich immer nur eine Datei befinden.

Es kann halt eine der 3 Dateien sein die ich oben genannt habe. Die Datei gehört nämlich immer zu einer Sendung, ist diese abgearbeitet kann Sie weg weil der Datensatz dann im Zielverzeichnis durch GLS in die Datenbank vom GLS Programm importiert wurde.

Die Datei im Zielordner wird durch GLS immer umbenannt in .erl

danke und Gruß
Eric
Member: TsukiSan
TsukiSan Dec 07, 2012 at 12:45:49 (UTC)
Goto Top
Hallo Eric,

also wenn die Datei dann weg kann, dann müsste obiges Script schon ziemlich gut für dich arbeiten können.
Dann sollte Zeile 28 oben durch
FSO.DeleteFile(Pfadangabe)
ersetzt werden.

Probier mal auf einem Rechner mit Testdateien und gib mal den aktuellen Stand durch, was noch nicht an dem Script passt.

Gruss
Tsuki
Member: E.Wind
E.Wind Dec 07, 2012 at 13:11:58 (UTC)
Goto Top
Hallo Tsuki,

ich komme leider erst morgen dazu das zu probieren, werde aber dann sofort bescheid sagen!

Vielen, vielen Dank schon mal vorab für die Mühen!

Grüße und erstmal ein schönes Wocheneende!
Eric
Member: TsukiSan
TsukiSan Dec 07, 2012 at 13:17:53 (UTC)
Goto Top
Hallo Eric,

ist ok!

Ich hatte zwischenzeitlich mir mal die besagten Ordner und mal 2 Testdateien mit irgendwelchen Namen/Nummern - ausser den ersten stellen - kreiert und das Script wie oben (angepasst!) mal laufen lassen. Es hat soweit funktioniert bei mir (WinXP SP3 deu). Jedesmal, wenn ich die Dateien zurückverschoben habe nach C:\Polling\Export dann sind nach 10 Sekunden beide Dateien wieder kopiert worden nach C:\Polling mit jedesmal dem Index des PCs (simuliert) am Ende der Datei.

Probier das morgen mal aus, wenn du Zeit hast und gib mal Feedback.

Schönes Adventwochenende und viele Grüsse

Tsuki
Member: E.Wind
E.Wind Dec 08, 2012 updated at 09:43:56 (UTC)
Goto Top
Hallo und guten Morgen Tsuki,

also die Datei funktioniert soweit sehr gut, wenn man es jetzt noch hin bekommt, das der Inhalt von:

Auftragsnummer;Name Vorname;Firma;Straße Hausnr.;PLZ;Ort;Tel.;Email;Land;Kunden-Nr.;Versandart;Betrag;Auftragsnummer;Gewicht;Lable-ID

nach

Auftragsnummer;Name Vorname;Firma;Straße Hausnr.;PLZ;Ort;Tel.;Email;Land;Kunden-Nr.;Versandart;Betrag;Auftragsnummer;Gewicht;Lable-ID;1

geändert wird und nicht wie im Moment so aussieht:

Auftragsnummer;Name Vorname;Firma;Straße Hausnr.;PLZ;Ort;Tel.;Email;Land;Kunden-Nr.;Versandart;Betrag;Auftragsnummer;Gewicht;Lable-ID
1

dann wäre ich Überglücklich und würde Dich mindestens bis Ende des Jahres anbeten ;)

Vielen, vielen, vielen Dank für Deine wirklich großartige Hilfe!

Grüße und ein schönes Adventwochenende

Eric
Member: TsukiSan
TsukiSan Dec 08, 2012 updated at 11:17:12 (UTC)
Goto Top
Hallo Eric,

dann probier mal dieses Script hier:
Dim FSO, Ordner
Dim OriginalPfad, Rennt1
Dim DateiFragment
Dim Starter
Dim RechnerNummer

set FSO = createobject("Scripting.FileSystemObject")  

OriginalPfad = "C:\Polling\Export\"  
AblageDatei = "C:\Polling\"  
DateiFragment = "GLS_GEPARD"  
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen  

Set Ordner = FSO.GetFolder(OriginalPfad)

Starter = 1

Do While Starter = 1

For Each File In Ordner.Files
    	Pfadangabe = File.Path
       	temp = Split(Pfadangabe,DateiFragment)
	If Ubound(temp) > 0 then
		TempData = Split(FSO.OpenTextFile(Pfadangabe, 1).ReadAll, vbCrLf)
		TempData(Ubound(TempData)-1) = TempData(Ubound(TempData)-1) & ";" & RechnerNummer  
		FSO.CreateTextFile (Pfadangabe).Write (Join(TempData,vbcrlf))
	FSO.CopyFile Pfadangabe, AblageDatei, True
	FSO.DeleteFile(Pfadangabe)
	End If
		
Next

Wscript.Sleep 10000

Loop

Das hängt in der - !Achtung! - vorletzten Zeile die Rechnernummer an.
Passt die Zeile, an der hinten angehangen wird, jetzt?
Wenn nicht , wo wird angehangen?

Gruss
Tsuki

Ps.: bitte nicht anbeten face-wink
Member: E.Wind
E.Wind Dec 08, 2012 at 11:31:51 (UTC)
Goto Top
Hallo Tsuki,

göttlich, es funktioniert genau so wie ich es brauche! Jetzt brauch ich bloß noch das Programm zu schalten und alles läuft automatisch!

Vielen vielen vielen Dank!

Grüße und ein schönes Restwochenende

Eric
Member: TsukiSan
TsukiSan Dec 08, 2012 at 11:48:55 (UTC)
Goto Top
göttlich, es funktioniert...
Na, ich würd' sagen es ist irdisch, die paar Zeilen Script face-wink

Gut, wenn's funktioniert und jemanden etwas Arbeit abnimmt.

Ein schönes 2tes Adventwochenende und viele Grüsse

Tsuki
Member: TsukiSan
TsukiSan Dec 08, 2012 at 11:56:12 (UTC)
Goto Top
Hallo Eric,

mach doch oben noch so ein: Oh-Tannenbaum-wie-grün-sind-deine-Blätter-Haken dran face-wink

Viele Grüsse

Tsuki
Member: E.Wind
E.Wind Dec 08, 2012 at 12:49:59 (UTC)
Goto Top
Hallo Tsuki,

ein Problem ist noch aufgetreten

Die umgeschriebene Datei hatte anstelle von S & M die Codierung für das Zeichen drinne stehen, das hat das GLS Programm dann wohl nicht mehr gerafft... Gibt es noch die Möglichkeit ihm zu erklären das er im grunde alle Zeichen so wie sie sind behält ohne sie zu maskieren?

Grüße
Eric

P.s.: Dank Danke Danke!
Member: TsukiSan
TsukiSan Dec 08, 2012 at 13:04:23 (UTC)
Goto Top
Die umgeschriebene Datei hatte anstelle von S & M die Codierung für das > Zeichen drinne stehen...

Hallo Eric,

das verstehe ich im Moment nicht ganz.
Kannst du mir ein Beispiel geben, also
vorher: 123ABC
nachher: ?????
und an welcher stelle/Zeile der Datei?

Lösen lässt sich ziemlich viel face-wink

Gruss

Tsuki
Member: E.Wind
E.Wind Dec 08, 2012 updated at 13:59:47 (UTC)
Goto Top
Hallo Tsuki,

wir hatten jetzt den Fall das eine Firma halt S&M Truckservice hießen und in der Text Datei dann gestanden hat '&'
da hier dann ein weiters ; drinnen ist macht ihm das Probleme was wohl dann auch bei ¨ usw. passieren wird

Das macht mir in erster Linie in deen Feldern:

Name Vorname;
Firma;
Straße Hausnr.;
Ort;

sorgen, das wäre die Felder wo Grundsätzlich ja Sonderzeichen und Umlaute drinnen vorkommen würden

Grüße
Eric
Member: bastla
bastla Dec 08, 2012 updated at 17:19:49 (UTC)
Goto Top
Hallo E.Wind und Tsuki!

Es wäre vermutlich sinnvoll, vorweg alle Sonderzeichen in der gesamten Datei passend zu ersetzen - hatten wir (relativ umfangreich) zB hier schon mal ...

Grüße
bastla
Member: TsukiSan
TsukiSan Dec 08, 2012 updated at 20:32:40 (UTC)
Goto Top
Hallo Eric, hallo bastla,

ich habe das Problem, dass ich Eric's Problem nicht nachvollziehen kann bei mir, auch wenn ich Umlaute oder asiatische Shriftzeichen etc. in eine Beispieldatei bei mir einfüge, werden diese beim Aufrufen meines Scriptes nicht verändert. Soll heissen, ich bekomme das beschriebene Problem nicht.

Wenn allerdings - wie von bastla angedeutet - die Dateien bei euch eintreffen aus einem anderen Land mit anderem Schriftsatz und ihr dann Probleme habt, diese bei euch einzulesen, dann müsste man entweder überlegen, ob nicht auf allen PCs die ihr in Deutschland und eventuell weltweit einsetzt, die gleichen Schriftsätze draufkommen oder wir integrieren bastlas Script .

Aber dann würde ich dazu tendieren, eine neue Frage aufzumachen.

Viele Grüsse

Tsuki
Member: bastla
bastla Dec 08, 2012 updated at 20:54:05 (UTC)
Goto Top
Hallo Tsuki!

Das Problem mit den genannten Sonderzeichen ist, dass sie mit dem Semikolon ein (zusätzliches) Trennzeichen enthalten, wodurch das Aufteilen der Zeile nicht mehr richtig erfolgt.

Ob gleich mit so großen Kanonen wie im verlinkten Script geschossen werden muss, oder eine Schleife der Art
Alt = Array("&", "Ä", "&auml", "...")  
Neu = Array("&", "Ä", "ä", "...")  

TempData = Split(FSO.OpenTextFile(Pfadangabe).ReadAll, vbCrLf)
For i = 0 To UBound(Alt)
    TempData = Replace(TempData, Alt(i), Neu(i))
Next
genügt, hängt von den zu erwartenden Daten ab - inklusive Zeichen mit Akzenten kann das aber eine ganz ordentliche Liste ergeben (siehe (SELF)HTML-Zeichenreferenz) ...

Grüße
bastla
Member: TsukiSan
TsukiSan Dec 08, 2012 at 21:20:41 (UTC)
Goto Top
Moin bastla,

aha, jetzt dämmerts mir etwas. Danke!
Na dann schauen wir mal, was Eric meint.
Deine Zeilen sind schnell eingfügt. Ansonsten - wenn es denn tatsächlich ganz viele Zeichesätze geben würde - dann lieber mit einer Liste als Datei und das ganze ersetzen. Sieht dann scriptmässig besser aus.

Viele Grüsse

Tsuki
Member: TsukiSan
TsukiSan Dec 09, 2012 updated at 07:21:25 (UTC)
Goto Top
Hallo Eric,

ich habe bastlas Zeilen mit eingebaut in der Hoffnung, dass es sich um dieses Problem bei dir handelt.
Die Zeilen 14 und 15 musst du ggf. anpassen.
Wenn es zu viele Sonderzeichen gibt, die man ersetzen muss, dann sieht das Script nicht mehr schön aus. In diesem Falle würde ich zu einer Datei tendieren, in der alle Sonderzeichen und deren Ersetzungszeichen stehen, die man am Anfang einmal einliest.
Hier das Script mit Ersetzen (Replace)
Dim FSO, Ordner
Dim OriginalPfad
Dim DateiFragment
Dim Starter
Dim RechnerNummer

set FSO = createobject("Scripting.FileSystemObject")  

OriginalPfad = "C:\Polling\Export\"  
AblageDatei = "C:\Polling\"  
DateiFragment = "GLS_GEPARD"  
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen  

FremdeZeichen = Array("&amp", "&Auml", "&auml", "...")  
ErsetzungsZeichen = Array("&", "Ä", "ä", "...")  

Set Ordner = FSO.GetFolder(OriginalPfad)

Starter = 1

Do While Starter = 1

For Each File In Ordner.Files
    	Pfadangabe = File.Path
       	temp = Split(Pfadangabe,DateiFragment)
	If Ubound(temp) > 0 then
		TempData = FSO.OpenTextFile(Pfadangabe, 1).ReadAll
		For i = 0 to Ubound(FremdeZeichen)
			TempData = Replace(TempData,FremdeZeichen(i),ErsetzungsZeichen(i))
		Next
		TempData = Split(TempData, vbCrLf)
		TempData(Ubound(TempData)-1) = TempData(Ubound(TempData)-1) & ";" & RechnerNummer  
		FSO.CreateTextFile (Pfadangabe).Write (Join(TempData,vbcrlf))
	FSO.CopyFile Pfadangabe, AblageDatei, True
	FSO.DeleteFile(Pfadangabe)
	End If
		
Next

Wscript.Sleep 10000

Loop

Schönen 2ten Advent und viele Grüsse

Axel
Member: E.Wind
E.Wind Dec 10, 2012 updated at 09:15:42 (UTC)
Goto Top
Hallo zusammen,

danke für die Hilfe! Da es im Grunde ja nur Ü, Ö, Ä, ß und & Zeichen sind die ich maskieren muss, hat das ganze gut funktioniert, ich bin einfach davon ausgegangen, das ich genau wie im HTML jeweils Groß- und Kleinschreibweise maskieren muss, sollte es jetzt fehlerfrei klappen.

Eine Frage noch für mich, muss ich nicht   suchen und ersetzen wenn ich & bzw. ü für ü?

Grüße
Eric
Member: TsukiSan
TsukiSan Dec 10, 2012 at 09:44:18 (UTC)
Goto Top
Hallo Eric,

Eine Frage noch für mich, muss ich nicht   suchen und ersetzen wenn > ich & bzw. ü für ü?

schaue dir hierzu die Zeilen 14 und 15 vom obigen Script an.
Diese beide Zeilen musst du dir anpassen.
Beispiel:
Du willst   als &
Du willst ü als ü
FremdeZeichen = Array(" ", "ü")   
ErsetzungsZeichen = Array("&","ü")  
Einfach in der Zeile 14 das HTML-Codierte-Zeichen eingeben in Gänsefüsschen und durch Komma trennen und darunter in Zeile 15 in Gänsefüsschen das normale Schriftzeichen eingeben.
Dann werden diese im obigen Script gesucht und ggf. ersetzt.

Gruss
Tsuki
Member: E.Wind
E.Wind Dec 10, 2012 at 10:01:48 (UTC)
Goto Top
Hallo Tsuki,

danke für die Info, da im obigen Script ursprünglich keine ; mit drinnen waren wollte ich sichergehen, das diese benötigt werden.

Jetzt sollte alles klappen!

Grüße
Eric