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

VBS-Batch - Script soll in einer test.txt Datei jede 5te Zeile von 0 auf 1 umschreiben

Frage Entwicklung

Mitglied: ownili

ownili (Level 1) - Jetzt verbinden

05.11.2008, aktualisiert 22:49 Uhr, 5644 Aufrufe, 4 Kommentare

Einige Variablenparameterlisten ändern

Hallo,

da ich in diesem Forum schon einige Interessante und hilfreiche Beiträge gefunden habe aber leider nichts passendes zu meinem derzeitigen Problem, hoffe ich dass ihr mir weiter helfen könnt.

ich habe mehrere sehr große Text dateien, die die Parameter von TCP/IP-Treibern beinhalten. Leider sind diese Text-Dateien nicht korrekt.

Die Dateien sind so aufgebaut:

1000
ST_PH08_BM01
0
4500
68
0
1
1000
ST_PH08_BM02
0
4500
68
0
1
1000
ST_PH08_BM03
0
4500
68
0
1
1000
AS_PH08_DI01
0
4500
68
0
1
...
...
...

Ich benötige ein Script, egal ob VBS oder Batch, welches auf einem normalen PC ohne Visual Studio oder vergleichbares programmier/ausführbar ist. Dieses Script sollte jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben.

Da es einige Dateien mit bis zu 1000 Variablen sind, möchte ich dies nicht zwingend per Hand machen!
Ich hoffe mir kann jemand weiter helfen!

Vielen Dank im voraus

Grüße
owni
Mitglied: bastla
05.11.2008 um 18:32 Uhr
Hallo ownili und willkommen im Forum!

Was kann als Kennzeichen für eine Zeile, welche den Variablennamen enthält, verwendet werden - erste Stelle ist ein Buchstabe, Zeilenlänge, enthaltener "_"?

Für die erste Variante könnte ein VBScript etwa so aussehen:
01.
Datei = "D:\Parameterdatei.txt" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF) 
04.
U = UBound(Zeilen) 
05.
 
06.
For i = 0 To U 
07.
    If Zeilen(i) >= "A" Then If i < U Then Zeilen(i + 1) = Replace(Zeilen(i + 1), "0", "1") 
08.
Next 
09.
 
10.
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
In dieser Fassung wird die Originaldatei ersetzt (und keine Sicherungskopie erstellt).

Grüße
bastla

[Edit] Anforderung
jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben
wörtlich genommen und per Ersetzung umgesetzt. [/Edit]
Bitte warten ..
Mitglied: ownili
05.11.2008 um 19:43 Uhr
Vielen Dank für die schnelle Antwort!

Ich habe deinen Quelltext genommen und in den Windows Editor gepackt und die Zeile (Datei = "C:\Test\Test.txt") angepasst. Danach habe ich das ganze als "Test.vbs" gespeichert. Wenn man diese Datei nun ausführt erscheint eine Meldung:

Windows Script host:
Skript: C:\Test\Test.vbs
Zeile: 5
Zeichen: 1
Fehler: Die Datei wurde nicht gefunden
Code: 800A0035
Quelle: Laufzeitfehler in Microsoft VBScript

Zeile 5 entspricht bei mir:
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF)

Ich benutze Windows-Vista-Buisness.

Ein "_" könnte man als anhaltspunkt benutzen. Ist es nicht auch möglich das Zeilenbezogen machen?
Sprich: z.b.:
Startzeile = 10
Abstand = 5(Zeilen)


Beste Grüße
owni
Bitte warten ..
Mitglied: bastla
05.11.2008 um 20:51 Uhr
Hallo ownili!

Weshalb ist die Zeile 3 bei Dir zur Zeile 5 geworden? Anyhow, ich habe eben nochmals Deine Testdaten und das Script hier heruntergeladen, in den entsprechenden Dateien in "C:\Test" gespeichert und erfolgreich ausgeführt. Eigentlich kann der Fehler bei Dir, wie ja auch der Meldung zu entnehmen ist, nur in einem falsch angegebenen Pfad liegen.

Ist es nicht auch möglich das Zeilenbezogen machen?
Sprich: z.b.:
Startzeile = 10
Abstand = 5(Zeilen)
Wenn damit gemeint ist, dass jeweils in den Zeilen 10, 15, 20, etc jede Null gegen eine Eins getauscht werden soll, dann so:
01.
Datei = "C:\Test\Test.txt" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF) 
04.
U = UBound(Zeilen) 
05.
 
06.
For i = 9 To U Step 5 
07.
    Zeilen(i) = Replace(Zeilen(i), "0", "1") 
08.
Next 
09.
 
10.
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
Da in VBS ab 0 gezählt wird, muss für die Zeile 10 in der "For"-Schleife mit 9 begonnen werden. Zu Deinen Testdaten passt allerdings ein 5-Zeilen-Abstand nicht wirklich - eher sollten es 7 sein ...
Um auch noch die "_"-Variante anzubieten:
01.
Datei = "C:\Test\Test.txt" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF) 
04.
U = UBound(Zeilen) 
05.
 
06.
For i = 0 To U 
07.
    If InStr(Zeilen(i), "_") > 0 Then If i < U Then Zeilen(i + 1) = Replace(Zeilen(i + 1), "0", "1") 
08.
Next 
09.
 
10.
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
Grüße
bastla
Bitte warten ..
Mitglied: ownili
05.11.2008 um 22:49 Uhr
Nochmals vielen Dank für die Arbeit,

nun funktioniert es perfekt!

Du hast recht, dass wären jeweils 7 Zeilen, die zu überspringen wären und als Startzeile die Nummer 2. Dies hab ich nun auch soweit angepasst.

Das Problem, welches vorhanden war, war tatsächlich auf den Pfad zurück zu führen, da die Datei "Test.txt.txt" hieß, da in den Einstellung vom Vista der Datentyp nicht mit eingeblendet war.

Beste Grüße
owni
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Script zum XML Datei Umschreiben
Frage von cberndtBatch & Shell12 Kommentare

Guten Tag. Ich habe folgendes Problem. Ich habe eine XML Datei mit meinen Gutscheincodes sowie weiter Daten aus meiner ...

Windows Tools
Batch script in Powershell umschreiben um Kennwortverschlüsselung gewährleisten zu können
gelöst Frage von JGS2015Windows Tools5 Kommentare

Edit: Sorry hatte den letzten Post zu schnell rein gepresst. Moin zusammen, Es geht um folgendes Skript: :repeat echo ...

Batch & Shell
VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen)
gelöst Frage von Luuke257Batch & Shell5 Kommentare

Hallo zusammen! Vorweg, ich bin absoluter neuling im Scripten, ich habe mir das alles nur so zusammengebastelt und versuche ...

Batch & Shell
Dateinamen umschreiben batch
gelöst Frage von jochengBatch & Shell5 Kommentare

Hi Leute ich trete mal wieder auf der Stelle. Es geht darum Bilddaten umzuschreiben. Ich bin auch fast am ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 10 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...