Top-Themen

Aktuelle Themen (A bis Z)

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

Fehletrhaftes vbs Script. Werte werden falsch ausgelesen bzw. geschrieben. Kann mir hier jemand helfen?

Mitglied: thomas1972

thomas1972 (Level 1) - Jetzt verbinden

11.03.2013, aktualisiert 11:58 Uhr, 1974 Aufrufe, 2 Kommentare

Hallo,

ich habe eine csv Datei die wie folgt aufgebaut ist

Test;name
20309;
20309;
20309;we
20309;te
20309;er
20309;ei
20309;ws
20309;si
10030;
10030;ei
10030;ws
10030;si
10030;

habe hierzu ein script gefunden, welches mir die Werte nebeneinander schreibt

01.
Ein = "c:\temp\funktion.csv" 
02.
Aus = "C:\Quelle\funktion_neu.csv" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set d = CreateObject("Scripting.Dictionary") 
07.
 
08.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbNewLine) 
09.
Ueber = Split(T(0), Delim)(0) 'erstes Feld der ersten Zeile übernehmen 
10.
For i = 1 To UBound(T) 'Bezeichnungen sammeln 
11.
    If Trim(T(i)) <> "" Then 'keine Leerzeile verarbeiten 
12.
        Bez = Split(T(i), Delim)(1) 'zweites Feld der Datenzeile lesen ... 
13.
        If Bez <> "" Then 
14.
            If Not d.Exists(Bez) Then '... und falls noch nicht vorhanden ... 
15.
                Ueber = Ueber & Delim & Bez '... der Überschrift hinzufügen 
16.
                Index = Index + 1 'Index für Felder hochzählen 
17.
                d.Add Bez, Index 'Bezeichnung und Index in Dictionary hinzufügen 
18.
            End If 
19.
        End If 
20.
    End If 
21.
Next 
22.
 
23.
Daten = Ueber 'Ausgabe beginnt mit Überschrift 
24.
Dim Felder 'Array initialisieren 
25.
ReDim Felder(Index) 
26.
For j = 1 To Index: Felder(j) = 0: Next 'Feldwerte auf 0 setzen 
27.
For i = 1 To UBound(T) 'alle Datenzeilen verarbeiten 
28.
    If Trim(T(i)) <> "" Then 'keine Leerzeile verarbeiten 
29.
        Bez = Split(T(i), Delim)(1) 'zweites Feld der Datenzeile lesen 
30.
        Nr = Split(T(i), Delim)(0) 'erstes Feld der Datenzeile lesen ... 
31.
        If Nr = Zuletzt Then '... und prüfen, ob noch gleiche Nummer 
32.
            FeldIndex = d.Item(Bez) 'Index für Bezeichnung ermitteln 
33.
            Felder(FeldIndex) = Felder(FeldIndex) - 1  'Anzahl erhöhen 
34.
        Else 
35.
            If i > 1 Then 'nicht erste Zeile, ... 
36.
                Daten = Daten & vbNewLine & Join(Felder, Delim) 'Datensatz der Ausgabe hinzufügen 
37.
            End If 
38.
            For j = 1 To Index: Felder(j) = 0: Next 'Feldwerte auf 0 setzen 
39.
            Felder(0) = Nr '... und Nr für neuen Satz eintragen 
40.
            FeldIndex = d.Item(Bez) 'Index für Bezeichnung ermitteln 
41.
            Felder(FeldIndex) = Felder(FeldIndex) - 1 'Anzahl erhöhen 
42.
        End If 
43.
        Zuletzt = Nr 
44.
    End If 
45.
Next 
46.
Daten = Daten & vbNewLine & Join(Felder, Delim) 'letzten Datensatz der Ausgabe hinzufügen 
47.
fso.CreateTextFile(Aus).Write Daten 'Ausgabedatei schreiben

aber Anstatt
Test;We;Te;Er;Ei;Ws;Si;
20309;-1;-1;-1;-1;-1;1
10030;0;0;0;-1;-1;-1

schreibt er


Test;We;Te;Er;Ei;Ws;Si;
20307;-1;-1;-1;-1;-1;1
10038;0;0;0;-1;-1;-1

Warum verändert er den Wert 20309 in 20307
bzw. 10030 ind 10038

es werden alle Werte in dern eu geschriebenen Datei verändert
Kann mir dieses nicht erklären, daher hoffe ich, jemand kann den Fehler erkennen.
Mitglied: 106543
11.03.2013 um 15:10 Uhr
Hi,

hab das ganze mal getestet und bei mir kommt am Ende wieder was anderes raus :D
den Fehler hab ich jetzt leider nicht gefunden, werde aber weitersuchen ;)

Ausgabe bei mir:
01.
Test;we;te;er;ei;ws;si 
02.
20307;-1;-1;-1;-1;-1;-1 
03.
10028;0;0;0;-1;-1;-1
Grüße
Exzellius
Bitte warten ..
Mitglied: bastla
11.03.2013, aktualisiert um 16:29 Uhr
Hallo thomas1972!

Bei einem leeren zweiten Feld im Datensatz ergibt sich ein FeldIndex von 0, und da in Felder(0) die Zeilenbezeichnung steht, wird diese um 1 vermindert - mit dieser Version sollte das nicht mehr passieren:
01.
Ein = "c:\temp\funktion.csv" 
02.
Aus = "C:\Quelle\funktion_neu.csv" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set d = CreateObject("Scripting.Dictionary") 
07.
 
08.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbNewLine) 
09.
Ueber = Split(T(0), Delim)(0) 'erstes Feld der ersten Zeile übernehmen 
10.
For i = 1 To UBound(T) 'Bezeichnungen sammeln 
11.
    If Trim(T(i)) <> "" Then 'keine Leerzeile verarbeiten 
12.
        Bez = Split(T(i), Delim)(1) 'zweites Feld der Datenzeile lesen ... 
13.
        If Bez <> "" Then 
14.
            If Not d.Exists(Bez) Then '... und falls noch nicht vorhanden ... 
15.
                Ueber = Ueber & Delim & Bez '... der Überschrift hinzufügen 
16.
                Index = Index + 1 'Index für Felder hochzählen 
17.
                d.Add Bez, Index 'Bezeichnung und Index in Dictionary hinzufügen 
18.
            End If 
19.
        End If 
20.
    End If 
21.
Next 
22.
 
23.
Daten = Ueber 'Ausgabe beginnt mit Überschrift 
24.
Dim Felder 'Array initialisieren 
25.
ReDim Felder(Index) 
26.
For j = 1 To Index: Felder(j) = 0: Next 'Feldwerte auf 0 setzen 
27.
For i = 1 To UBound(T) 'alle Datenzeilen verarbeiten 
28.
    If Trim(T(i)) <> "" Then 'keine Leerzeile verarbeiten 
29.
        Bez = Split(T(i), Delim)(1) 'zweites Feld der Datenzeile lesen 
30.
        Nr = Split(T(i), Delim)(0) 'erstes Feld der Datenzeile lesen ... 
31.
        If Nr = Zuletzt Then '... und prüfen, ob noch gleiche Nummer 
32.
            If Bez <> "" Then 
33.
                FeldIndex = d.Item(Bez) 'Index für Bezeichnung ermitteln 
34.
                Felder(FeldIndex) = Felder(FeldIndex) - 1  'Anzahl erhöhen 
35.
            End If 
36.
        Else 
37.
            If i > 1 Then 'nicht erste Zeile, ... 
38.
                Daten = Daten & vbNewLine & Join(Felder, Delim) 'Datensatz der Ausgabe hinzufügen 
39.
            End If 
40.
            For j = 1 To Index: Felder(j) = 0: Next 'Feldwerte auf 0 setzen 
41.
            Felder(0) = Nr '... und Nr für neuen Satz eintragen 
42.
            If Bez <> "" Then 
43.
                FeldIndex = d.Item(Bez) 'Index für Bezeichnung ermitteln 
44.
                Felder(FeldIndex) = Felder(FeldIndex) - 1 'Anzahl erhöhen 
45.
            End If 
46.
        End If 
47.
        Zuletzt = Nr 
48.
    End If 
49.
Next 
50.
Daten = Daten & vbNewLine & Join(Felder, Delim) 'letzten Datensatz der Ausgabe hinzufügen 
51.
fso.CreateTextFile(Aus).Write Daten 'Ausgabedatei schreiben
Noch eine Frage: Warum -1 in den Zeilen 34 und 44 (passt auch nicht zum Kommentar )? Eigentlich wird ja die Häufigkeit des Vorkommens von "we", "te", etc gezählt ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Suche jemanden der mir in Powershell helfen kann !!!

Frage von PowershellAnfaenger1990Batch & Shell10 Kommentare

Hallo, seit gestern bin auf Probearbeiten für eine Ausbildungsstelle, allerdings habe ich keinerlei vertiefte Erfahrung in Programmieren. Nun wurde ...

Virtualisierung

VirtualBox VM nach Update nicht mehr zugreifbar - kann jemand helfen?

gelöst Frage von Maxxx01Virtualisierung7 Kommentare

Hallo, ich habe Virtualbox auf WIN 7 laufen und darin als virtuelle Maschine Lubuntu. VB hat mir ein Update ...

Windows Server

Völlig falsche Werte nach gpupdate

Frage von ofodagWindows Server4 Kommentare

Hallo zusammen, ich habe folgendes Problem bei einem einzigen Server. Ich habe eine Policy bzgl. WSUS die auch bei ...

VB for Applications

VBS Script kann Prgramm nicht starten

gelöst Frage von C.BoernerVB for Applications15 Kommentare

Hallo ihr Admins, Ich habe folgendes Scenarios ein Programm läuft im Hintergrund (Drivve-Image) das übergibt Werte an ein VBS ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein interessanter Beitrag dazu: Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10 Anscheinend ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs11 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)10 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...