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

Textdateidurchsuchungs-Programm

Frage Microsoft Windows Tools

Mitglied: Erathy

Erathy (Level 1) - Jetzt verbinden

24.02.2010, aktualisiert 14:32 Uhr, 3944 Aufrufe, 31 Kommentare

Hallo,

ich habe schon mehrere Dateidurchsuchungsprogramme wie :

Textfinder, Wingrep, Examine 32, EF Find

probiert, aber nicht funktionier so wie ich es brauchen würde.

Zu meinem Problem:

Ich suche ein Programm das eine Textdatei durchsucht und mir sagen kann in welchem Abschnitt (Abschnitt endet mit !) das Wort "dot1x" nicht vorkommt.
Mit dem Programmen oben konnte ich nur angeben das er z.b: immer 10 Zeilen nimmt oder 100 Buchstaben aber das dies immer eine andere Länge hat funktioniert das nicht.

Beispieltextdatei:

interface FastEthernet0/1
description xxxxxxxx
switchport xxxxxxxx
switchport xxxxxxxx
no logging xxxxxxxx
load-interval xxxx
no snmp trap link-status
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
spanning-tree portfast
!
interface FastEthernet0/2
description xxxxx
switchport xxxxx
switchport xxxxx
no logging xxxxx
load-interval xxxxx
no snmp trap link-status
spanning-tree portfast
!
interface FastEthernet0/3
description xxxxx
switchport xxxxx
switchport xxxxx
no logging xxxxx
load-interval xxxxx
no snmp trap link-status
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
dot1x xxxxx
spanning-tree portfast
!


Gruß Erath
31 Antworten
Mitglied: Biber
24.02.2010 um 14:40 Uhr
Moin Erathy,

Rückfragen:
  • muss es denn ein Tool sein oder geht auch ein handelsüblicher Batch/VBS-Skriptschnipsel?
  • wie/in welcher Form brauchst du denn dein Ergebnis? Als Textdatei/Auswertung/Liste? Oder in einem Programmablauf als Prüfung "Prüfe Abschnitt XY, ob dot1.1.xxx" vorhanden (ja/nein)?"
  • oder ist gar "ein Programm das eine Textdatei durchsucht und mir sagen kann" wörtlich gemeint und du erwartest eine Sprachausgabe? Wenn ja: nur deutsch oder simultan übersetzt?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
24.02.2010 um 14:44 Uhr
Hallo Erathy und willkommen im Forum!

Dazu würde ich einen Batch mit etwas VBS verwenden:
01.
@echo off & setlocal 
02.
set "Datei=D:\Beispiel.txt" 
03.
set "Suche=dot1x" 
04.
set "Ergebnis=D:\Ergebnis.txt" 
05.
 
06.
set "G=%temp%\GetP.vbs" 
07.
>%G%  echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!") 
08.
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)=0 Then:WScript.Echo T(i):End If:Next 
09.
 
10.
cscript //nologo "%G%" "%Datei%" "%Suche%">"%Ergebnis%"
Wie groß kann denn die besagte Textdatei werden? Ich habe mal unterstellt, dass sie zur Gänze in den Arbeitsspeicher passt ...

[Edit]
Falls Du übrigens nur an der jeweils ersten Zeile des Blocks (also zB "interface FastEthernet0/2" interessiert sein solltest, müssten die Zeilen 6 und 7 so aussehen:
01.
>%G%  echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!" ^& vbCrLf) 
02.
>>%G% echo S=WScript.Arguments(1):For i=0 To UBound(T):If InStr(T(i),S)=0 Then:If T(i)^<^>"" Then:WScript.Echo Split(T(i),vbCrLF)(0):End If:End If:Next
[Edit]

Grüße
bastla

[Edit] @Biber: Im Vergleich zu mir hast Du Dir den Beinamen "der Geduldige" tatsächlich verdient ... [/Edit]
Bitte warten ..
Mitglied: Erathy
24.02.2010 um 15:00 Uhr
Danke für die schnellen Antworten.

Zum Thema:

Ob es ein Tool oder ein Batch ezt. ist, ist mir eigentlich egal. Ich habe einen Ordner in dem über 40 Textdateien liegen die alle so aufgebaut sind und möchte nach der Abfrage das Ergebnis irgendwie ausgiebt. Am liebsten wäre mir es wenn es mir sofort anzeigen würde wo es fehlt also ich kann sagen " suche in Datei "xxx" und zeig mir alle Blöcke wo nicht "dot 1x" vorhanden ist.

Gruß Erath
Bitte warten ..
Mitglied: bastla
24.02.2010 um 15:22 Uhr
Hallo Erathy!
ich kann sagen " suche in Datei "xxx" und zeig mir alle Blöcke wo nicht "dot 1x" vorhanden ist.
Ich fürchte, Spracheingabe kann ich nicht anbieten - insofern:
Willst Du jedes Mal den Suchbegriff eingeben, oder genügt es, wenn dieser im Batch festgelegt ist?
Möchtest Du die Datei eingeben, oder wäre Dir "Drag & Drop" lieber?

Für das "Zeigen" der Blöcke bietet sich der Editor an (dazu einfach im Batch oben am Ende die Zeile
notepad "%Ergebnis%"
hinzufügen) ...

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
24.02.2010 um 16:00 Uhr
Danke nochmal für die Antwort.

Ich habe die Batch gerade zum testen ein wenig modifiziert und die Zeilen:

set Auswahl=0
set /p Auswahl="Bitte Textdatei Waehlen: "

hinzugefügt und den Pfad mit der Variable ersetzt.

So muss ich jetzt immer den Namen der Textdatei eingeben und er erstellt mir dann das textfile wo die Blöcke drinstehen die dot 1x nicht enthalten.


Kann man die Bedienung vielleicht noch erleichtern indem ich die Datei auswählen kann und nicht den exakten Namen schreiben muss?

Was mir noch aufgefallen ist, wenn ich Namen habe die Leerzeichen enthalten nimmt er mir nur den letzten Teil des Namens.

Gruß Erath
Bitte warten ..
Mitglied: bastla
24.02.2010 um 16:30 Uhr
Hallo Erathy!

Wenn Du auswählen willst, dann bietet sich "Drag & Drop" an - dazu einfach anstelle von
set /p Auswahl="Bitte Textdatei Waehlen: "
die Zeile
set "Auswahl=%~1"
verwenden.
Was mir noch aufgefallen ist, wenn ich Namen habe die Leerzeichen enthalten nimmt er mir nur den letzten Teil des Namens.
Deshalb stand ja bei mir oben "%Datei%" (bei Dir dann eben "%Auswahl%") auch unter Anführungszeichen ...

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
24.02.2010 um 16:33 Uhr
So,

ich habe jetzt nochmal einwenig herumprobiert und habe herausgefunden das ich bei der Eingabe kein z.B. " *.* " benutzen kann. Ist das nicht möglich? Wenn es möglich ist kann man auch nach " test*.* " suchen ? Das würde mir sehr helfen wenn ich mehrere Textdateien mit * auswählen könnte.

edit.:

Meine Datei schaut nun so aus :

@echo off & setlocal

set "Auswahl=%~1"



set "Datei=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\%Auswahl%"
set "Suche=dot1x"
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt"

set "G=%temp%\GetP.vbs"
>%G% echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!")
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)=0 Then:WScript.Echo T(i):End If:Next

cscript //nologo "%G%" "%Datei%" "%Suche%">"%Ergebnis%"

und ich bekomme bei starten den Fehler:

C:\Temp\GetP.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Der Pfad wurde nicht gefunden.


Gruß Erath
Bitte warten ..
Mitglied: bastla
24.02.2010 um 17:03 Uhr
Hallo Erathy!

Versuch es damit:
01.
@echo off & setlocal 
02.
set "Datei=%~1" 
03.
set "Suche=dot1x" 
04.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
05.
 
06.
set "G=%temp%\GetP.vbs" 
07.
>%G% echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!") 
08.
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)=0 Then:WScript.Echo T(i):End If:Next 
09.
 
10.
cscript //nologo "%G%" "%Datei%" "%Suche%">"%Ergebnis%"
Wenn Du eine Datei auf den Batch ziehst, wird ohnehin der vollständige Pfad übergeben.

Falls Du alle Textdateien, deren Name mit "test" beginnt, verarbeiten wolltest, dann (ungetestet) etwa so:
01.
@echo off & setlocal 
02.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\test*.txt" 
03.
set "Suche=dot1x" 
04.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
05.
 
06.
set "G=%temp%\GetP.vbs" 
07.
>%G% echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!") 
08.
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)=0 Then:WScript.Echo T(i):End If:Next 
09.
 
10.
del "%Ergebnis%" 2>nul 
11.
for %%i in ("%Dateien%") do ( 
12.
    echo %%i 
13.
    echo\ 
14.
    cscript //nologo "%G%" "%%i" "%Suche%" 
15.
    echo ================================= 
16.
)>>"%Ergebnis%"
Grüße
bastla
Bitte warten ..
Mitglied: Erathy
25.02.2010 um 08:20 Uhr
Hallo bastla!

Es funktioniert super. Danke für die Hilfe!

Gruß Erath
Bitte warten ..
Mitglied: bastla
25.02.2010 um 17:15 Uhr
Hallo Erathy!

Aufgrund Deiner Nachfrage per PN: Um die Blöcke anzuzeigen, in denen der Suchbegriff enthalten ist, verwende die folgende Zeile 7:
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)^>0 Then:WScript.Echo T(i):End If:Next 
Grüße
bastla
Bitte warten ..
Mitglied: bastla
26.02.2010 um 15:58 Uhr
... und noch eine Ergänzung: Um das "!" am Ende jeden Blocks auch wieder auszugeben, wäre die obige Zeile wie folgt zu ändern:
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)^>0 Then:WScript.Echo T(i)^&"!":End If:Next
Grüße
bastla
Bitte warten ..
Mitglied: Erathy
01.03.2010 um 08:03 Uhr
Hallo nochmal,

ich habe die Blöcke jetzt ausgetauscht und es funktioniert wie ich es wollte. Ich habe jetzt einfach 2x das ganze Programm nacheinader mit jeweil einmal der Zeil mit dem Suchwort das vorhaden ist und einmal mit der Zeil mit dem Suchwort das nicht vorhaden ist. Ich lasse das Programm anch dem ersten Suchdurchlauf eine Textdatei erstellen und suche im 2ten Durchlauf nur in dieser Textdatei. Das funktioniert aber dadurch habe ich das Problem das wenn ich mehrere Dateinen auswähle wie "*.txt" wird mir nach dem ersten Suchdurchlauf in Textdatei noch richtig erstellt mit der jeweiligen Zeile in welcher Textdatei gesucht wurde. Die Textdatei nach dem 2ten Suchdurchlauf macht dies aber nichtmehr das sie nur die Zwischenergebnis Textdatei durchsucht.

Ist es möglich es so umzubauen das ich den Pfad immer noch habe oder vielleich sogar ohne die Zwischenergebnis Datei ?
Bitte warten ..
Mitglied: bastla
01.03.2010 um 14:34 Uhr
Hallo Erathy!

Kannst Du bitte nochmals beschreiben, wie der gesamte Ablauf aussehen soll?

Wie ich es derzeit verstehe, sollen mehrere Textdateien einzeln durch zwei UND-verknüpfte Suchvorgänge gefiltert werden - was soll aber dann mit dem Ergebnis passieren?

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
01.03.2010 um 17:19 Uhr
Hallo bastla!

Also es startet am Anfang eine Abfrage welcher "Name1" vorhanden sein soll, danach eine Abfrage welcher "Name2" nicht vorhanden sein soll (im jeweiligen Block der mit "!" getrennt.

Dann kommt die Abfrage welche Datei ich durchsuchen möchte. Hier wird einfach der Name eingegeben oder zB.: test*.txt und somit alle Dateien die mit test beginnen ausgewertet.

Am Schluss soll es mir die Blöcke anzeigen indenen "Name1" vorhanden und "Name2" nicht vorhanden ist.

Gruß Erath
Bitte warten ..
Mitglied: bastla
02.03.2010 um 16:12 Uhr
Hallo Erathy!

Bis zum "--------" war ich gedanklich schon - offen ist aber immer noch die Frage, in welcher Form das Ergebnis angezeigt werden soll, wenn Du mehrere Dateien auswertest - eine große (Gesamt-)Ergebnisdatei, oder für jede Datei eine einzelne Ergebnisdatei?

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
02.03.2010 um 16:56 Uhr
Als Ergebnis soll EINe Textdatei erstellt werden indem immer der Pfad angegeben wird aus welcher Textdatei das Ergebnis ist. Wie bei der Suche oben wo ich nur nach einem Suche und in mehreren Dateien, da steht am Anfang immer der Pfad der Textdatei und wenn diese fertig ist der Pfad der Nächsten Textdatei usw.

Bsp:

xxxxx\test1.txt

die Blöcker


xxxx\test2.txt

Blöcke

usw.


Gruß Erath
Bitte warten ..
Mitglied: bastla
02.03.2010 um 17:52 Uhr
Hallo Erathy!

Na dann:
01.
@echo off & setlocal 
02.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\test*.txt" 
03.
set "Mit=Name1" 
04.
set "Ohne=Name2" 
05.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
06.
 
07.
set "G=%temp%\GetP.vbs" 
08.
>%G% echo Set a=WScript.Arguments:T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll, "!") 
09.
>>%G% echo M=a(1):O=a(2):For i=0 To UBound(T):If InStr(T(i),M)^>0 And InStr(T(i),O)=0 Then:WScript.Echo T(i)^&"!":End If:Next 
10.
 
11.
del "%Ergebnis%" 2>nul 
12.
for %%i in ("%Dateien%") do ( 
13.
    echo %%i 
14.
    echo\ 
15.
    cscript //nologo "%G%" "%%i" "%Mit%" "%Ohne%" 
16.
    echo ================================= 
17.
)>>"%Ergebnis%"
[Edit] Aufrufparameter in Zeile 15 richtig gestellt [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
04.03.2010 um 08:05 Uhr
Hallo bastla,

wenn ich bei "Mit=XXXXX" statt den XXX ein wort udn das selbe bei "Ohne=XX" machen kommt bei mir

C:\Temp\GetP.vbs(2, 8) Laufzeitfehler in Microsoft VBScript: Index außerhalb des gültigen Bereiches

Der Fehler kommt glaube ich sooft wie ich verschiedene Dateine auswählen "test*.txt" kommen 2 Fehler da ich 2 Dateien habe die mit test Beginnen. Bei *.txt kommen 4 Fehler und ich habe 4 Textdateien in dem Ordner.

Gruß Erath
Bitte warten ..
Mitglied: bastla
04.03.2010 um 08:43 Uhr
Hallo Erathy!

Ändere (ich mach' es oben auch) die Zeile 15 auf
cscript //nologo "%G%" "%%i" "%Mit%" "%Ohne%"
Grüße
bastla
Bitte warten ..
Mitglied: Erathy
05.03.2010 um 16:52 Uhr
Hallo bastla,

jetzt funktioniert es, und mir ist noch aufgefallen das wenn ich eine Suche mit "*.txt" starte (in dem ordner fefinden sich 3 Textdateien "test1.txt | test2.txt | Text.txt ") er mir die erste Datei test1.txt 2x in das Ergebnissfile einträgt.

Gruß Erath
Bitte warten ..
Mitglied: Erathy
19.04.2010 um 08:40 Uhr
Hallo,

ich habe das Batch nun schon ein wenig in Betrieb gehabt und bin noch auf folgende Probleme gestoßen,

1. Bei der Eingabe welche Wörte ich suche / nicht suche muss die Groß- und Kleinschreibung beachtet werden.
Gibt es da eine möglichkeit dies zu ignorieren ?

2. Ich habe neu Textdateien die einen header haben und das Batch unterteilt mir den Header auch und Sucht mir dort auch die Ergebnisse.
Ist es möglich das das Batch erst ab einer bestimmten Stelle (z.B. wenn das erste mal "interface" steht) anfängt die blöcke zu unterteilen und auch bei einem bestimmten Wort aufhört (z.B. wenn "vlan1" im Text vorkommt, da dies immer im letzten Block steht)?

Gruß Erath
Bitte warten ..
Mitglied: bastla
14.05.2010 um 14:37 Uhr
Hallo Erathy!

Das Ignorieren der Groß-/Kleinschreibung sollte diese geänderte Zeile 9 ermöglichen:
>>%G% echo M=a(1):O=a(2):For i=0 To UBound(T):If InStr(1,T(i),M,1)^>0 And InStr(1,T(i),O,1)=0 Then:WScript.Echo T(i)^&"!":End If:Next
Zu 2.
Kann davon ausgegangen werden, dass der erste relevante Block mit dem Wort "interface" (am Zeilenanfang) beginnt?

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
17.05.2010 um 09:32 Uhr
Hallo bastla!

Ja, der erste relevante Block beginnt mit "Interface".

Gruß Erath
Bitte warten ..
Mitglied: bastla
22.05.2010 um 15:40 Uhr
Hallo Erathy!

Versuch es mit dem Ersetzen der Zeile 8 durch
01.
>%G%  echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll 
02.
>>%G% echo P=InStr(1,T,vbCrLf^&"Interface",1):If P^>0 Then T=Mid(T,P+1):End If:T=Split(T,"!")
Damit sollten nur mehr Zeilen ab der ersten mit dem Wort "Interface" beginnenden Zeile erfasst werden.

Hinsichtlich des letzten Blocks bin ich mir noch nicht ganz sicher - wäre die gewünschte Vorgangsweise, keine weiteren Blöcke mehr auszugeben, wenn erstmals in einem Block der String "vlan1" enthalten war? In diesem Fall müsste die (bisherige) Zeile 9 durch
01.
>>%G% echo M=a(1):O=a(2):For i=0 To UBound(T):If InStr(1,T(i),M,1)^>0 And InStr(1,T(i),O,1)=0 Then 
02.
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then Exit For:End If:End If:Next
ersetzt werden.

Grüße
bastla

P.S.: Das Testen habe ich Dir überlassen ...
Bitte warten ..
Mitglied: Erathy
25.05.2010 um 08:02 Uhr
Hallo bastla,

ich habe Zeile 8 nun ersetzt und es funktioniert super.

Wenn ich aber Zeile 9 ersetzte (es schaut dann so aus :

>%G% echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll
>>%G% echo P=InStr(1,T,vbCrLf^&"Interface",1):If P^>0 Then T=Mid(T,P+1):End If:T=Split(T,"!")
>>%G% echo M=a(1):O=a(2):For i=0 To UBound(T):If InStr(1,T(i),M,1)^>0 And InStr(1,T(i),O,1)=0 Then
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then Exit For:End If:End If:Next

)


kommt ein Fehler :

C:\Temp\GetP.vbs(4, 73) Kompilierungsfehler in Microsoft VB Script : Muss die erste Anweisung in der Zeile sein

Ich kann damit nicht viel anfangen und habe nichts hilfreiches im internet gefunden.

Wäre nett wenn du mir wiedereinmal helfen könntest.

Danke!

Gruß Erath
Bitte warten ..
Mitglied: bastla
25.05.2010 um 11:31 Uhr
Hallo Erathy!

Spät, aber doch, möchte ich Dich auf die Möglichkeit der "Code"-Formatierung hinweisen - macht geposteten Code besser lesbar und erleichtert die Bezugnahme auf einzelne Zeilen ...
Versuch es als Ersatz der letzten Scriptzeile
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then Exit For:End If:End If:Next
durch die folgenden beiden Zeilen
01.
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then Exit For 
02.
>>%G% echo End If:Next
Grüße
bastla
Bitte warten ..
Mitglied: Erathy
25.05.2010 um 16:07 Uhr
Hallo bastla,

danke für den Tipp mit der "Code"-Formatierung ich werde sie in Zukunft nutzen.

Ich hab es nun getestet und es kommt kein Fehler mehr. Es fängt erst ab dem ersten "interface" an ABER es hört nicht bei "vlan1" auf. Es nimmt die Blöcke danach auch noch.

Gruß Erath
Bitte warten ..
Mitglied: bastla
25.05.2010 um 16:17 Uhr
Hallo Erathy!
es hört nicht bei "vlan1" auf. Es nimmt die Blöcke danach auch noch.
Kann ich nicht nachvollziehen (das VBScript habe ich inzwischen getestet) - prüfe bitte, ob die Schreibweise von "vlan1" im Script und in der Datei übereinstimmen und poste ggf ein Stück einer solchen Datei ...

Grüße
bastla
Bitte warten ..
Mitglied: Erathy
08.06.2010 um 08:57 Uhr
Hallo bastla,

ich habe es nun mit einer neun Testdatei getestet. Dort funktioniert es, das es bei "vlan1" aufhört. Bis jetzt funktioniert alles super.

Danke !

Gruß Erathy
Bitte warten ..
Mitglied: Erathy
10.06.2010 um 11:24 Uhr
Hallo bastla,

ich habe gerade versucht die Zeilen in die 2 Batch-Dateien einzusetzten indenen ich nur "Vorhanden" oder "Nicht Vorhaden" suche (also 2 einzelne die nur jeweils das eine machen und nicht zusammen).

Ich habe versucht die Zeilen mit der Groß- und Kleinschreibung, die das es erst ab Interface anfängt und die das es bei "vlan1" aufhört so abzuändern das es funktionier doch es bringt mir immer Fehler. Mein code der dateinen schaut nun so aus:

Suche für ein wort das vorhanden ist :

01.
 
02.
@echo off & setlocal 
03.
 
04.
set /p Datei="Bitte Datei(en) waehlen: " 
05.
set /p SWort="Bitte Suchwort waehlen das vorhanden ist: " 
06.
 
07.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\%Datei%" 
08.
set "Suche=%Swort%" 
09.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
10.
 
11.
set "G=%temp%\GetP.vbs" 
12.
>%G% echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!") 
13.
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)^>0 Then:WScript.Echo T(i):End If:Next  
14.
 
15.
del "%Ergebnis%" 2>nul 
16.
for %%i in ("%Dateien%") do ( 
17.
    echo %%i 
18.
    echo\ 
19.
    cscript //nologo "%G%" "%%i" "%Suche%" 
20.
    echo. 
21.
    echo ============================================================================================ 
22.
    echo ============================================================================================ 
23.
    echo. 
24.
    echo. 
25.
 
26.
)>>"%Ergebnis%" 
27.
 
Suche für ein Wort das nicht vorhanden ist :

01.
 
02.
@echo off & setlocal 
03.
 
04.
set /p Datei="Bitte Datei(en) waehlen: " 
05.
set /p SWort="Bitte Suchwort waehlen das nicht vorhanden ist: " 
06.
 
07.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\%Datei%" 
08.
set "Suche=%Swort%" 
09.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
10.
 
11.
set "G=%temp%\GetP.vbs" 
12.
>%G% echo T=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, "!") 
13.
>>%G% echo S=WScript.Arguments(1):For i = 0 To UBound(T):If InStr(T(i),S)=0 Then:WScript.Echo T(i):End If:Next 
14.
 
15.
del "%Ergebnis%" 2>nul 
16.
for %%i in ("%Dateien%") do ( 
17.
    echo %%i 
18.
    echo\ 
19.
    cscript //nologo "%G%" "%%i" "%Suche%" 
20.
    echo ============================================================================================ 
21.
    echo ============================================================================================ 
22.
    echo. 
23.
 
24.
)>>"%Ergebnis%" 
25.
 
Ich habe schon versucht die Zeilen ein wenig abzuändern und Sachen wegzulassen aber es hat nie funktioniert.

Gruß Erath
Bitte warten ..
Mitglied: bastla
12.06.2010 um 19:04 Uhr
Hallo Erathy!

Sollte eigentlich so
01.
@echo off & setlocal 
02.
 
03.
set /p Datei="Bitte Datei(en) waehlen: "  
04.
set /p SWort="Bitte Suchwort waehlen das vorhanden ist: "  
05.
 
06.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\%Datei%" 
07.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
08.
 
09.
set "G=%temp%\GetP.vbs" 
10.
>%G%  echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll 
11.
>>%G% echo P=InStr(1,T,vbCrLf^&"Interface",1):If P^>0 Then T=Mid(T,P+1):End If:T=Split(T,"!") 
12.
>>%G% echo M=a(1):For i=0 To UBound(T):If InStr(1,T(i),M,1)^>0 Then 
13.
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then:Exit For:End If:End If:Next 
14.
 
15.
del "%Ergebnis%" 2>nul 
16.
for %%i in ("%Dateien%") do ( 
17.
    echo %%i 
18.
    echo\ 
19.
    cscript //nologo "%G%" "%%i" "%SWort%" 
20.
    echo ================================= 
21.
)>>"%Ergebnis%"
bzw so
01.
@echo off & setlocal 
02.
 
03.
set /p Datei="Bitte Datei(en) waehlen: "  
04.
set /p SWort="Bitte Suchwort waehlen das _nicht_ vorhanden ist: "  
05.
 
06.
set "Dateien=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\%Datei%" 
07.
set "Ergebnis=I:\Dateien\Programme\Dateidurchsuchung\Testsuche\Ergebnis.txt" 
08.
 
09.
set "G=%temp%\GetP.vbs" 
10.
>%G%  echo Set a=WScript.Arguments:T=CreateObject("Scripting.FileSystemObject").OpenTextFile(a(0)).ReadAll 
11.
>>%G% echo P=InStr(1,T,vbCrLf^&"Interface",1):If P^>0 Then T=Mid(T,P+1):End If:T=Split(T,"!") 
12.
>>%G% echo O=a(1):For i=0 To UBound(T):If InStr(1,T(i),O,1)0 Then 
13.
>>%G% echo WScript.Echo T(i)^&"!":If InStr(1,T(i),"vlan1",1)^>0 Then:Exit For:End If:End If:Next 
14.
 
15.
del "%Ergebnis%" 2>nul 
16.
for %%i in ("%Dateien%") do ( 
17.
    echo %%i 
18.
    echo\ 
19.
    cscript //nologo "%G%" "%%i" "%SWort%" 
20.
    echo ================================= 
21.
)>>"%Ergebnis%"
gehen (ungetestet as usual ) ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
32 Bit CAD Programm und Excel 64 Bit geht nicht (5)

Frage von GrueneSosseMitSpeck zum Thema Microsoft Office ...

Internet
Alternative zu MS Autoroute Außendienst-Programm

Frage von Yannosch zum Thema Internet ...

Grafik
gelöst Suche Programm um Bilder zu verkleinern (10)

Frage von fox14ch zum Thema Grafik ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...