Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
GELÖST

VBS Wert aus einer Textdatei lesen und in eine andere Textdatei übertragen

Frage Entwicklung

Mitglied: mmatt851

mmatt851 (Level 1) - Jetzt verbinden

14.10.2011 um 10:42 Uhr, 4440 Aufrufe, 7 Kommentare

Hallo,

ich habe folgendes Problem. Leider bin ich "noch ein VBS Anfänger und ich soll ein kleines Programm schreiben welches die Werte aus einer Textdatei herauszieht ( ist immer die Letzte Zeile der gleichen Textdatei) und in eine andere Leere Textdatei schreibt. Von dieser neuen Textdatei greift dann ein externe System darauf zu und zeiht sich den Wert.
Der Wert steht nach dem zweiten ; in der Zeile.

;01.09.2011;1087;;;;;;1087;;;N/mm²;

Mein Problem ist es jetzt das ich zwar eine neue Textdatei generiere, jedoch kein Inhalt übertragen und wie komme ich genau an den zweiten Wert (1087) in der Zeile?
Kann mir da jemansd helfen?
Vielen Dank schonmal

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
Set o = fso.GetFolder("M:\Matt\_25_Haertepruefung_WBH\Datei") 
03.
Set da = o.Files 
04.
counter = o.Files.Count   ' Zählt die Anzahl der Dateien im Ordner 
05.
msgbox counter 
06.
if counter > 1 then 
07.
msgbox "Es sind mehrere Dateien vorhanden, es ist nur eine Messwertdatei im Ordner zulässig!!" 
08.
WScript.Quit 
09.
end if 
10.
For Each d in da 
11.
    s = s & d.path 
12.
    msgbox s   
13.
    next   
14.
' ----- Härtewert wird aus der Datei gelesen ------       
15.
Set fso = CreateObject("Scripting.FileSystemObject") 
16.
set oFile = fso.OpenTextFile(s,1) 
17.
Zeilen = Split(oFile.ReadAll, vbCrLf) 
18.
AnzahlZeilen = oFile.Line 
19.
msgbox AnzahlZeilen 
20.
oFile.close 
21.
 
22.
Set Textdatei = fso.CreateTextfile("M:\Matt\_25_Haertepruefung_WBH\Datei\Haertewert.txt",2) 
23.
Textdatei.WriteLine Zeilen(AnzahlZeilen - 1) 
24.
Textdatei.close
Mitglied: bastla
14.10.2011 um 11:25 Uhr
Hallo mmatt851 und willkommen im Forum!

Da Du ja ein Array "Zeilen" erzeugst, kannst Du die letzte Zeile über
LetzteZeile = Zeilen(UBound(Zeilen))
erhalten.

Falls am Ende der Datei noch eine Zeilenschaltung stünde, wäre diese letzte Zeile leer - daher prüfen und ggf die vorletzte Zeile verwenden:
If Trim(LetzteZeile) = "" Then LetzteZeile = Zeilen(UBound(Zeilen) - 1)
wie komme ich genau an den zweiten Wert (1087) in der Zeile?
Soferne ";" das Trennzeichen ist, handelt es sich bei "1087" um den dritten Wert der Zeile (allerdings mit dem Index 2, wenn Du die Zeile per "Split()" zerlegst) ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
14.10.2011 um 11:40 Uhr
Aloha,

... warum zählst du die Anzahl der Dateien im Ordner, wenn es

immer die Letzte Zeile der gleichen Textdatei

ist? Dann gib' doch an, um welche Datei es sich handelt ...

Mit batch wär's doch so schön einfach

VBS wäre mir dafür zu aufwändig

greetz André
Bitte warten ..
Mitglied: mmatt851
14.10.2011 um 13:19 Uhr
Mit Batch habe ich leider keinerlei Erfahrung!

Es darf sich nur eine Datei im Ordner befinden, sonst könnten die falschen Werte verwendet werden.

@ bastla: wo kann ich den split befehl einbringen?
Bitte warten ..
Mitglied: bastla
14.10.2011 um 13:23 Uhr
Hallo mmatt851!
wo kann ich den split befehl einbringen?
Wo Du willst - solange es nach dem Ermitteln von "LetzteZeile" und vor dem Schreiben in die Zieldatei passiert ...

Grüße
bastla
Bitte warten ..
Mitglied: mmatt851
14.10.2011 um 14:20 Uhr
01.
' ----- Härtewert wird aus der Datei gelesen ------       
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
If fso.FileExists(s) then 
04.
set oFile =fso.opentextfile(s) 
05.
sLines = split(oFile.ReadAll, vbcrlf) 
06.
oFile.close 
07.
 
08.
Readline = slines(UBound(slines) + nLine - 1) 
09.
msgbox Readline 
10.
 
11.
End if 
12.
 
13.
'----- Wert in neue Textdatei schreiben ----- 
14.
sText "Hallo"  
15.
Set Textdatei = fso.CreateTextfile("M:\Matt\_25_Haertepruefung_WBH\Datei\1\Haertewert.txt",2) 
16.
Textdatei.WriteLine sText 
17.
Textdatei.close
Ich habe es nun so gelöst! Irgendwie stehe ich auf dem Schlauch
Wenn ich es richtig verstehe habe ich jetzt nun meine gewünschte Zeile in Readline. Oder?
Nun möchte ich bei Readline den Split Befehl anwenden um an den Wert zu kommen, doch da kommt immer die Meldung, dass die Typen unverträglich sind!
Was mache ich falsch?
Bitte warten ..
Mitglied: bastla
14.10.2011 um 14:49 Uhr
Hallo mmatt851!

Was soll denn "nLine" darstellen?

Anyhow, wenn Du in "Readline" (es ist übrigens keine gute Idee, Variablen den Namen von Eigenschaften oder, wie hier, Methoden zu geben) die gesuchte Zeile hast, kannst Du mit
Wert = Split(Readline, ";")(2)
den Inhalt des 3. Feldes auslesen ...

Grüße
bastla

P.S.: Dein "End If" kommt in Zeile 11 zu früh - wenn es keine Quelldatei gab, hat es auch keinen Sinn, eine Zieldatei zu erstellen ...
Bitte warten ..
Mitglied: mmatt851
14.10.2011 um 15:05 Uhr
Danke bastla für deine Hinweise!

Habe sie so umgesetzt und das Programm läuft und erfüllt seinen Zweck!

Vielen Dank!

Grüße
mmatt851
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen (3)

Frage von georg2204 zum Thema Batch & Shell ...

VB for Applications
gelöst Kommunikation zwischen vbs und javascript (1)

Frage von it4baer zum Thema VB for Applications ...

Microsoft Office
gelöst Übertrag in eine andere Tabelle (7)

Frage von charmeur zum Thema Microsoft Office ...

Batch & Shell
gelöst Komplette Zeile aus Textdatei auslesen (3)

Frage von tegwert zum Thema Batch & Shell ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(16)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (33)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...