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

gelöst Batch Abfrage und Änderung einer Textdatei in einem Verzeichnis

Mitglied: X-Spezi

X-Spezi (Level 1) - Jetzt verbinden

24.12.2010, aktualisiert 14:06 Uhr, 6549 Aufrufe, 6 Kommentare

Hallo an alle Forum-Mitglieder! Ich bin auf Euere Hilfe angewiesen, ich habe mit einer Batch-Programmierung Probleme. Auch bei Google konnte ich nicht das Richtige finden.

"Per Batch Abfrage und Änderung einer Textdatei in einem Verzeichnis "

Ich habe folgendes Problem: Wir fragen mit SNMP alle Drucker im Netzt ab .
Allerdings antwortet auch andere Hardware wie PC´s
Das Ergebnis der Abfrage ist in einer Txt Datei gespeichert, allerdings ziemlich unübersichtlich.
Darum möchte ich diese Datei über einen Batch etwas anpassen.

1. In einer Zeile nach einem Text oder Zeichen suchen und dann den Rest löschen, oder
2. Wenn es diesen Text oder Zeichen NICHT gibt, dann die Zeile löschen

Beispiel : Drucker - Abfrage über SNMP

Bei Erfolgreicher Antwort:

Von PC
IP 192.168.1.100 SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 6 Model 9 Stepping 5 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free)


Von Drucker:
IP 192.168.1.101 SNMPv2-MIB::sysDescr.0 = STRING: HP 5SI; System Software Version 4711.000, Main Controller 0.03.40, Network Controller 1.30, Image Output Terminal 01.24, User Interface 0.045.15.0, DADF 11, Tray2 1.01.

IP 192.168.1.102 SNMPv2-MIB::sysDescr.0 = STRING: Epson T-750; System Software Version 4812.000, Main Controller 0.03.40, Network Controller 1.30, Image Output Terminal 01.24, User Interface 0.045.15.0, DADF 13, Tray2 1.01.


Bei negativer Antwort
IP 192.168.1.103
IP 192.168.1.104


Das Ergebnis sollte dann so Aussehen.

IP 192.168.1.101 HP 5SI
IP 192.168.1.102 Epson T-750


Ich habe mir folgendes Vorgestellt:

1. Durchgang: Wenn im Text KEIN Semikolon (nach Druckermodell) erscheint, dann die Zeile löschen
2. Durchgang: Wenn im Text ein Semikolon (nach Druckermodell) erscheint, dann den Rest löschen.
3. Durchgang : Text von SNMP bis String: löschen
4. Das Ergebnis in einer neuen Datei speichern.

Kann mir dabei jemand helfen? Danke!

x-spezi
Mitglied: mathe172
24.12.2010 um 15:17 Uhr
Hallo X-Spezi!

Versuch mal diesen Code hier: (Ist so ziemlich nach deiner Idee)
01.
@echo off & setlocal enabledelayedexpansion 
02.
Rem Ausgabedatei 
03.
set "Ausgabe=Ausgabe.txt" 
04.
Rem Ausgabedatei löschen, wenn vorhanden 
05.
If exist %Ausgabe% del %Ausgabe% 
06.
Rem Eine Schleife die jede Zeile der Ausgangsdatei(test.txt) abarbeitet 
07.
Rem Als Stücke werden das erste (vor) und das zweite (nach) dem Trennzeichen ";" benutzt 
08.
for /F "tokens=1,2 delims=;" %%A in (test.txt) do ( 
09.
Rem Wenn der zweite nicht leer ist (also nicht kein Trennzeichen da ist)... 
10.
if not "%%B"=="" ( 
11.
Rem ...Den ersten Teil (also bis vor das ";") bearbeiten 
12.
Rem Dafür das Trennzeichen " " nehmen und die Stücke so aufteilen: 
13.
Rem 1-5 in einzellne Variablen (entspricht: "IP","192.168...","SNMP...Descr.0","=","String:") und den Rest (entspricht dem Druckernamen) in eine andere 
14.
for /F "tokens=1-5*" %%a in ("%%A") do ( 
15.
Rem die gewünschten in die Ausgabedatei schreiben 
16.
echo.%%a %%b %%f>>%Ausgabe% 
17.
18.
19.
20.
pause
Das ganze funktioniert aber nur, wenn der zu löschende Teil (SNMP...String: ) immer aus drei Teilen besteht

Mathe172
Bitte warten ..
Mitglied: X-Spezi
25.12.2010 um 13:35 Uhr
Hallo Mathe 172,

danke für die schnelle Antwort.
Das ist schon fast perfekt )

Aber in dem Ergebnis fehlt die IP Nummer und der kpl. Druckername.

Ausgabe von dem Batch:

SNMPv2-MIB::sysDescr.0 =
SNMPv2-MIB::sysDescr.0 =
SNMPv2-MIB::sysDescr.0 = II NT v47.0
SNMPv2-MIB::sysDescr.0 =
SNMPv2-MIB::sysDescr.0 =
SNMPv2-MIB::sysDescr.0 = 15
SNMPv2-MIB::sysDescr.0 =
SNMPv2-MIB::sysDescr.0 = PageMaster 1025
SNMPv2-MIB::sysDescr.0 =

Sollte sein

IP 192.168.1.233 HP5 SI
IP 192.168.1.236 Epson T-750
IP 192.168.1.240 Apple LaserWriter II NT v47.0
…………

Ich glaube bei der Suche nach Trennzeichen entsteht der Fehler



Die Abfrageliste ist:

Suche gestartet um 10:12:51,76 am 23.12.2010

IP 192.168.1.200

IP 192.168.1.201

IP 192.168.1.202

IP 192.168.1.203

IP 192.168.1.204

IP 192.168.1.205

IP 192.168.1.206

IP 192.168.1.207

IP 192.168.1.208

IP 192.168.1.209

IP 192.168.1.210

IP 192.168.1.211

IP 192.168.1.212

IP 192.168.1.213

IP 192.168.1.214

IP 192.168.1.215

IP 192.168.1.216

IP 192.168.1.217
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 6 Model 8 Stepping 1 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free)

IP 192.168.1.218

IP 192.168.1.219

IP 192.168.1.220

IP 192.168.1.221

IP 192.168.1.222

IP 192.168.1.223

IP 192.168.1.224

IP 192.168.1.225

IP 192.168.1.226

IP 192.168.1.227

IP 192.168.1.228

IP 192.168.1.229

IP 192.168.1.230

IP 192.168.1.231

IP 192.168.1.232

IP 192.168.1.233
SNMPv2-MIB::sysDescr.0 = STRING: HP5 SI;PS 4.2.0,Net 25.72.10.07.2005,Eng 0.11.2,OS 6.26

IP 192.168.1.234
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 6 Model 9 Stepping 5 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free)

IP 192.168.1.235

IP 192.168.1.236
SNMPv2-MIB::sysDescr.0 = STRING: Epson T-750; OS 8.38, PS 5.1.6, Eng 12.11.0, Net 41.78.11.09.2010, Adobe PostScript 3016.101 (10), PCL 5c Version 5.0

IP 192.168.1.237

IP 192.168.1.238

IP 192.168.1.239

IP 192.168.1.240
SNMPv2-MIB::sysDescr.0 = STRING: Apple LaserWriter II NT v47.0; System Software Version 15.003.40.000, Main Controller 2.50.03.40, Network Controller 4.01.30, Image Output Terminal 0.01.24, User Interface 0.045.15.030, DADF 1.01, Tray2 1.01.04

IP 192.168.1.241
SNMPv2-MIB::sysDescr.0 = STRING: Canon LBP-3260; OS 1.70.02.63 _SMP1R1, NIC V4.01.16(P3435 SMP1R1) 07-16-2009, Engine 1.00.60, Tray2 3.00.01, Duplex 0.00.00 , PCL6 5.93 03-21-2009, PS3 V1.94.06 12-22-2008

IP 192.168.1.242
SNMPv2-MIB::sysDescr.0 = STRING: Brother HJ-100; ESS 0.R01.08.354.01, IOT 23.55.0, UI 0.2.98.52, Finisher 9.30.0, Scanner 15.7.0

IP 192.168.1.243

IP 192.168.1.244
SNMPv2-MIB::sysDescr.0 = STRING: Compaq PageMarq 15; System 1.3.7.P, OS 8.13, PS 5.1.3, Eng 11.58.00, Net 41.75.10.18.2010, Adobe PostScript 3016.101 (14), PCL 5e/6 Version 7.0.1, Finisher 4.02.00

IP 192.168.1.245

IP 192.168.1.246
SNMPv2-MIB::sysDescr.0 = STRING: Citizen 120D; System 1.3.8.P, OS 10.24, PS 4.1.0, Eng 23.P1.4.1.0, Net 42.02.07.19.2010, Adobe PostScript 3016.101 (16), PCL 5c Version 5.0

IP 192.168.1.247
SNMPv2-MIB::sysDescr.0 = STRING: Bull Compuprint PageMaster 1025; System Software 10.100.71.000, Main Controller 1.01.07.10, Network Controller 2.01.71.02, IOT 1.00.28, UI 0.030.33.007, Document Feeder 1.02, Tray2 1.00.00, Finisher 3.06.05, IH 0.00.01

IP 192.168.1.248

IP 192.168.1.249

IP 192.168.1.250

IP 192.168.1.251

IP 192.168.1.252

IP 192.168.1.253

IP 192.168.1.254

IP 192.168.1.255
SNMPv2-MIB::sysDescr.0 = STRING: Brother HJ-100;PS 4.2.0,Net 25.72.10.07.2005,Eng 0.11.2,OS 6.26



Könntest Du mir hier noch einmal helfen ?

Vielen Dank und auch noch ein frohes Weihnachtsfest

Von X-Spezi
Bitte warten ..
Mitglied: bastla
25.12.2010 um 14:52 Uhr
Hallo X-Spezi!

Verwende bitte zum Posten der Beispieldaten "Code"-Formatierung - dann ist (hoffentlich) auch eindeutig zu erkennen, ob/dass es (im Unterschied zu Deiner Beschreibung oben) zwischen der IP und der "SNMP..."-Ausgabe einen Zeilenumbruch gibt, was zu einer veränderten Logik im Batch führen würde, nämlich etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
Rem Eingabedatei 
03.
set "Eingabe=test.txt" 
04.
Rem Ausgabedatei 
05.
set "Ausgabe=Ausgabe.txt" 
06.
Rem Ausgabedatei löschen; wenn nicht vorhanden, Fehlermeldung unterdrücken 
07.
del "%Ausgabe%" 2>nul 
08.
Rem Variable, um die IP zwischenzuspeichern, initialisieren 
09.
set "IP=" 
10.
Rem Eine Schleife, die jede Zeile der Ausgangsdatei(test.txt) abarbeitet: 
11.
Rem Als Stücke werden das erste (vor) und das zweite (nach) dem Trennzeichen ";" benutzt 
12.
for /F "usebackq tokens=1,2 delims=;" %%A in ("%Eingabe%") do ( 
13.
    Rem Ersten Teil der Zeile zerlegen, um zwischen "IP"-Zeile und Daten-Zeile zu unterscheiden 
14.
    Rem und im ersten Fall die IP zu extrahieren und zwischenzuspeichern 
15.
    for /f "tokens=1,2" %%h in ("%%A") do if %%h==IP ( 
16.
        set "IP=%%i" 
17.
    ) else ( 
18.
        Rem Wenn der zweite Teil der Zeile nicht leer ist (also nicht kein Trennzeichen da ist) ... 
19.
        Rem ... und vorher eine IP gespeichert wurde ... 
20.
        if not "%%B"=="" if defined IP ( 
21.
            Rem ... diesen ersten Teil (also bis vor das ";") bearbeiten 
22.
            Rem Dafür das defaultmäßige Trennzeichen " " nehmen und die Stücke so aufteilen: 
23.
            Rem 1-3 in einzelne Variablen (entspricht: "SNMP...Descr.0","=","String:") und den Rest (entspricht dem Druckernamen) 
24.
            for /F "tokens=1-3*" %%a in ("%%A") do ( 
25.
                Rem die gewünschten Informationen in die Ausgabedatei schreiben 
26.
                >>"%Ausgabe%" echo IP !IP! %%d 
27.
                set "IP=" 
28.
29.
30.
31.
)
(In dieser Fassung bekäme dann auch "enabledelayedexpansion" Sinn ...)

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
25.12.2010 um 15:25 Uhr
Hallo X-Spezi!

Da in deinem ersten Beispiel kein Zeilenumbruch nach den IPs war, habe ich dir einen "falschen" Code gegeben.

Versuch mal das:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set Ausgabe=Ausgabe.txt 
03.
for /F "tokens=1,2 delims=;" %%A in (test.txt) do ( 
04.
if not "%%B"=="" ( 
05.
for /F "tokens=3*" %%a in ("%%A") do ( 
06.
echo.IP !IP! %%b>>%Ausgabe% 
07.
08.
09.
for /F "tokens=2" %%a in ("%%A") do set "IP=%%a" 
10.
11.
pause
Dieser Code immer den 2. Token einer Zeile. Dann überprüft er, ob ein ";" vorhanden ist, wenn ja, nimmt er den Druckernamen und die IP der letzten Zeile als Ausgabe.

Mathe172
[Edit: hab grad gesehen das Bastla einen Code eingefügt hat]
Bitte warten ..
Mitglied: 76109
25.12.2010 um 17:57 Uhr
Hallo X-Spezi!

Eventuell tut's auch ein VB-Script (*.vbs):
01.
    Const iPath = "E:\Test\Import.txt" 
02.
    Const ePath = "E:\Test\Export.txt" 
03.
 
04.
    Dim Re, Fso, File, Text 
05.
 
06.
    Set Re = New RegExp 
07.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
08.
     
09.
    Set File = Fso.OpenTextFile(iPath) 
10.
     
11.
    Text = File.ReadAll:  File.Close 
12.
     
13.
    Set File = Fso.CreateTextFile(ePath) 
14.
     
15.
    With Re 
16.
       .Global = True 
17.
       .IgnoreCase = True 
18.
       .Pattern = "(IP [^S^\r]*)[^=]*= STRING: ([^;^\r]*);" 
19.
    End With 
20.
                                                           
21.
    For Each Token In Re.Execute(Text) 
22.
        With Token.Submatches 
23.
            If .Count = 2 Then File.WriteLine .Item(0) & .Item(1) 
24.
        End With 
25.
    Next 
26.
     
27.
    File.Close
Pfad-Konstanten entsprechend anpassen.

Gruß Dieter
Bitte warten ..
Mitglied: X-Spezi
26.12.2010 um 14:15 Uhr
Hallo Mathe 172, hallo bastla,

Danke für eure Hilfe, es ist genau die Ausgabe die ich brauche.

@ Dieter, auch Dir einen schönen Dank.


Viele Grüße

x-spezi
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Vbscript batch bei änderung ausführen

Frage von chgs2011VB for Applications1 Kommentar

Hallo, ich habe ein Batch-File, das mir einige Arbeiten erleichtert. Ich möchte aber das Batch-File nicht im Minutentakt antriggern, ...

Windows Tools

Batch Verzeichnis vergleichen, in einer anderes kopieren

Frage von cappu25Windows Tools11 Kommentare

Halloo an alle, ich habe jetzt schon verdammt lange rumprobiert und gegooglet aber ich bekomme keine Lösung hin. Folgendes: ...

Batch & Shell

Textdatei verschlüsseln per Batch

gelöst Frage von Nick2212Batch & Shell22 Kommentare

Hi Leute ich wollte einmal fragen ob es eine Möglichkeit gibt, den Inhalt einer Textdatei per Batch zu verschlüsseln ...

Batch & Shell

Batch Textdatei Spaltenweise auslesen

Frage von PinkFLuffyUnicornBatch & Shell7 Kommentare

hi, ist es irgendwie möglich anstatt eine Textdatei via Batch Spaltenweise auszulesen und nicht zeilenweise wie das normal ganz ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 22 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 1 TagCPU, RAM, Mainboards6 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

LAN, WAN, Wireless
100m+ Leitungslänge Ethernet
gelöst Frage von Ex0r2k16LAN, WAN, Wireless16 Kommentare

Guten Morgen zusammen, ich habe eine Netzwerkdose die die 100m Leitungslänge bis zum Switch knackt. Damit die Verbindung einigermaßen ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...