Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zeichen an eine CSV Datei anhängen

Frage Entwicklung Batch & Shell

Mitglied: E.Wind

E.Wind (Level 1) - Jetzt verbinden

06.12.2012, aktualisiert 14:44 Uhr, 3002 Aufrufe, 32 Kommentare

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

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.
32 Antworten
Mitglied: Biber
06.12.2012, aktualisiert um 19:33 Uhr
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
Bitte warten ..
Mitglied: E.Wind
06.12.2012 um 16:25 Uhr
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.
Bitte warten ..
Mitglied: Pjordorf
06.12.2012 um 18:29 Uhr
Hallo,

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

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
Bitte warten ..
Mitglied: E.Wind
07.12.2012 um 08:27 Uhr
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
Bitte warten ..
Mitglied: Pjordorf
07.12.2012, aktualisiert 10.12.2012
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]
Bitte warten ..
Mitglied: TsukiSan
07.12.2012 um 12:08 Uhr
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

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
Bitte warten ..
Mitglied: E.Wind
07.12.2012 um 12:17 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
07.12.2012 um 12:28 Uhr
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
Bitte warten ..
Mitglied: E.Wind
07.12.2012, aktualisiert um 12:38 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
07.12.2012, aktualisiert um 14:06 Uhr
Hallo Eric,

ich könnte mir das in VBS grob so vorstellen, zu lösen:
01.
Dim FSO, Ordner 
02.
Dim OriginalPfad, Rennt1 
03.
Dim DateiFragment 
04.
Dim Starter 
05.
Dim RechnerNummer 
06.
 
07.
set FSO = createobject("Scripting.FileSystemObject") 
08.
 
09.
OriginalPfad = "C:\Polling\Export\" 
10.
AblageDatei = "C:\Polling\" 
11.
DateiFragment = "GLS_GEPARD" 
12.
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen 
13.
 
14.
Set Ordner = FSO.GetFolder(OriginalPfad) 
15.
 
16.
Starter = 1 
17.
 
18.
Do While Starter = 1 
19.
 
20.
For Each File In Ordner.Files 
21.
    	Pfadangabe = File.Path 
22.
       	temp = Split(Pfadangabe,DateiFragment) 
23.
	If Ubound(temp) > 0 then 
24.
		Set MeineDatei = FSO.OpenTextFile(Pfadangabe, 8) 
25.
		MeineDatei.WriteLine (RechnerNummer) 
26.
		MeineDatei.close 
27.
	FSO.CopyFile Pfadangabe, AblageDatei, True 
28.
	FSO.DeleteFile(Pfadangabe) 
29.
	End If 
30.
		 
31.
Next 
32.
 
33.
Wscript.Sleep 10000 
34.
 
35.
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]
Bitte warten ..
Mitglied: E.Wind
07.12.2012 um 13:05 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
07.12.2012 um 13:17 Uhr
Hallo Eric,

gehen tut einiges in VBS, aber nicht alles .
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
Bitte warten ..
Mitglied: E.Wind
07.12.2012 um 13:30 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
07.12.2012 um 13:45 Uhr
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
01.
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
Bitte warten ..
Mitglied: E.Wind
07.12.2012 um 14:11 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
07.12.2012 um 14:17 Uhr
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
Bitte warten ..
Mitglied: E.Wind
08.12.2012, aktualisiert um 10:43 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
08.12.2012, aktualisiert um 12:17 Uhr
Hallo Eric,

dann probier mal dieses Script hier:
01.
Dim FSO, Ordner 
02.
Dim OriginalPfad, Rennt1 
03.
Dim DateiFragment 
04.
Dim Starter 
05.
Dim RechnerNummer 
06.
 
07.
set FSO = createobject("Scripting.FileSystemObject") 
08.
 
09.
OriginalPfad = "C:\Polling\Export\" 
10.
AblageDatei = "C:\Polling\" 
11.
DateiFragment = "GLS_GEPARD" 
12.
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen 
13.
 
14.
Set Ordner = FSO.GetFolder(OriginalPfad) 
15.
 
16.
Starter = 1 
17.
 
18.
Do While Starter = 1 
19.
 
20.
For Each File In Ordner.Files 
21.
    	Pfadangabe = File.Path 
22.
       	temp = Split(Pfadangabe,DateiFragment) 
23.
	If Ubound(temp) > 0 then 
24.
		TempData = Split(FSO.OpenTextFile(Pfadangabe, 1).ReadAll, vbCrLf) 
25.
		TempData(Ubound(TempData)-1) = TempData(Ubound(TempData)-1) & ";" & RechnerNummer 
26.
		FSO.CreateTextFile (Pfadangabe).Write (Join(TempData,vbcrlf)) 
27.
	FSO.CopyFile Pfadangabe, AblageDatei, True 
28.
	FSO.DeleteFile(Pfadangabe) 
29.
	End If 
30.
		 
31.
Next 
32.
 
33.
Wscript.Sleep 10000 
34.
 
35.
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
Bitte warten ..
Mitglied: E.Wind
08.12.2012 um 12:31 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
08.12.2012 um 12:48 Uhr
göttlich, es funktioniert...
Na, ich würd' sagen es ist irdisch, die paar Zeilen Script

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

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

Tsuki
Bitte warten ..
Mitglied: TsukiSan
08.12.2012 um 12:56 Uhr
Hallo Eric,

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

Viele Grüsse

Tsuki
Bitte warten ..
Mitglied: E.Wind
08.12.2012 um 13:49 Uhr
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!
Bitte warten ..
Mitglied: TsukiSan
08.12.2012 um 14:04 Uhr
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

Gruss

Tsuki
Bitte warten ..
Mitglied: E.Wind
08.12.2012, aktualisiert um 14:59 Uhr
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
Bitte warten ..
Mitglied: bastla
08.12.2012, aktualisiert um 18:19 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
08.12.2012, aktualisiert um 21:32 Uhr
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
Bitte warten ..
Mitglied: bastla
08.12.2012, aktualisiert um 21:54 Uhr
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
01.
Alt = Array("&", "Ä", "&auml", "...") 
02.
Neu = Array("&", "Ä", "ä", "...") 
03.
 
04.
TempData = Split(FSO.OpenTextFile(Pfadangabe).ReadAll, vbCrLf) 
05.
For i = 0 To UBound(Alt) 
06.
    TempData = Replace(TempData, Alt(i), Neu(i)) 
07.
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
Bitte warten ..
Mitglied: TsukiSan
08.12.2012 um 22:20 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
09.12.2012, aktualisiert um 08:21 Uhr
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)
01.
Dim FSO, Ordner 
02.
Dim OriginalPfad 
03.
Dim DateiFragment 
04.
Dim Starter 
05.
Dim RechnerNummer 
06.
 
07.
set FSO = createobject("Scripting.FileSystemObject") 
08.
 
09.
OriginalPfad = "C:\Polling\Export\" 
10.
AblageDatei = "C:\Polling\" 
11.
DateiFragment = "GLS_GEPARD" 
12.
RechnerNummer = 1 ' hier die Nummer für jeden Rechner anpassen 
13.
 
14.
FremdeZeichen = Array("&amp", "&Auml", "&auml", "...") 
15.
ErsetzungsZeichen = Array("&", "Ä", "ä", "...") 
16.
 
17.
Set Ordner = FSO.GetFolder(OriginalPfad) 
18.
 
19.
Starter = 1 
20.
 
21.
Do While Starter = 1 
22.
 
23.
For Each File In Ordner.Files 
24.
    	Pfadangabe = File.Path 
25.
       	temp = Split(Pfadangabe,DateiFragment) 
26.
	If Ubound(temp) > 0 then 
27.
		TempData = FSO.OpenTextFile(Pfadangabe, 1).ReadAll 
28.
		For i = 0 to Ubound(FremdeZeichen) 
29.
			TempData = Replace(TempData,FremdeZeichen(i),ErsetzungsZeichen(i)) 
30.
		Next 
31.
		TempData = Split(TempData, vbCrLf) 
32.
		TempData(Ubound(TempData)-1) = TempData(Ubound(TempData)-1) & ";" & RechnerNummer 
33.
		FSO.CreateTextFile (Pfadangabe).Write (Join(TempData,vbcrlf)) 
34.
	FSO.CopyFile Pfadangabe, AblageDatei, True 
35.
	FSO.DeleteFile(Pfadangabe) 
36.
	End If 
37.
		 
38.
Next 
39.
 
40.
Wscript.Sleep 10000 
41.
 
42.
Loop
Schönen 2ten Advent und viele Grüsse

Axel
Bitte warten ..
Mitglied: E.Wind
10.12.2012, aktualisiert um 10:15 Uhr
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
Bitte warten ..
Mitglied: TsukiSan
10.12.2012 um 10:44 Uhr
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 ü
01.
FremdeZeichen = Array(" ", "ü")  
02.
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
Bitte warten ..
Mitglied: E.Wind
10.12.2012 um 11:01 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...