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

Findstr mit zwei Parametern ODER-verknüpft?

Frage Entwicklung Batch & Shell

Mitglied: Manu123

Manu123 (Level 1) - Jetzt verbinden

10.08.2010 um 08:41 Uhr, 7709 Aufrufe, 11 Kommentare

Hallo,

ich bin neu hier und habe bis jetzt eigentlich meine Probleme immer lesend lösen können. Im Moment hänge ich aber an einem Problem, das hier bislang nicht explizit beschrieben wurde. Es wäre toll, wenn ihr mir helfen könntet.

Es geht um die Verkettung von Parametern per findstr. Ich habe eine größere txt-Datei in html-Format in der Quelltext gespeichert ist.
Das Ganze sieht etwa so aus:

<td title="test123456678">
test123
...
</td>
<td>12345</td>
<td title="test456">
test456

Davor und danach sind Zeilen, die ich nicht dabeihaben will. Nun will ich die Zeilen mit dem Anfang "<td" haben und Zeilen, die kein < bzw > enthalten. Am günstigsten wären zwei findstr-Operationen, die eine mit

findstr /c:"<td"

die andere mit

findstr /v "<"

Diese beiden dann mit ODER verknüpfen, sodass beide Arten von Zeilen im Endeffekt in der richtigen Reihenfolge in einer neuen txt stehen.
Was ich gefunden habe ist folgendes:

http://www.administrator.de/index.php?content=98647

for /f "delims=" %%c in ('findstr /c:"Inserted " %1 ^|findstr /e "CSM"') do (set /a xc+=1)

was bei mir analog dann ja

for /f "delims=" %%c in ('findstr /c:"<td" %1 ^|findstr /v "<"') do echo > neu.txt

sein dürfte. Das klappt aber nicht. Habt ihr vielleicht eine Idee?
Mitglied: mathe172
10.08.2010 um 11:16 Uhr
Hallo Manu123!

Ich bin mir zwar nicht ganz sicher, aber so wie es aussieht, rufst du die Zeile ja nicht mit Parametern auf. Da aber "%1" der für den ersten Parameter steht (%2 für den zweiten usw...) und, wenn ich das richtig sehe wie es in deiner Zeile als Name der zu Durchsuchenden Datei verwendet. Versuch doch mal anstatt dem %1 den Namen der Datei mit Endung einzugeben

Mathe172
Bitte warten ..
Mitglied: pieh-ejdsch
10.08.2010 um 11:27 Uhr
Hi Manu123,

sodass beide Arten von Zeilen im Endeffekt in der richtigen Reihenfolge in einer neuen txt stehen

da musst Du das ganze mit ODER || Verketten (was warscheinlich nicht so geht)
im moment sucht Deine erste Anweisung alle Zeilen, welchen mit <td beginnen und in die Zweite (nach) | Anweisung zeigt die Zeilen wiederum nicht an.

mach es in etwa so:
type "D:\Meine.txt" | (findstr /b "<td"||findst /v "< >")>>neu.txt

Gruß Phil
Bitte warten ..
Mitglied: mathe172
10.08.2010 um 11:37 Uhr
Hallo pieh-ejdsch

Danke für den Hinweis, das hab ich übersehen. Aber heisst || nicht "wenn das davor nicht tut, mach das danach"?
Vielleicht mir "OR" ? (Hab von logischen Operatoren keine Ahnung)

Mathe172
Bitte warten ..
Mitglied: pieh-ejdsch
10.08.2010 um 11:50 Uhr
aaarg ich dachte die ODER Anweisung bekommt auch den inPut aber nöö

01.
>"%temp%\tmp" echo "^<td  
02.
for /f "usebackq delims=" %%i in ("D:\Meine.txt") do (echo "%%i"|findstr /b /g:"%temp%\tmp" >>neu.txt 
03.
	echo "%%i"|findstr /v "< >">>neu.txt 
04.
)
Gruß Phil
Bitte warten ..
Mitglied: Manu123
10.08.2010 um 11:56 Uhr
Hallo Phil,

danke für Deine Antwort.

leider meint cmd, dass || syntaktisch an dieser Stelle nicht verarbeitbar ist. Ich kenne mich mit batch-Befehlen nicht genügend aus, deswegen weiß ich auch nicht, ob es möglich ist das direkt zu verknüpfen.

Eine alternative strategie wäre eventuell 2x findstr darüberlaufen zu lassen, mit dem ergebnis die zeilennummern auszugeben. dann diese 2 dateien zusammenführen und von dieser quelle aus die fertige datei zu bekommen?

grüße
Bitte warten ..
Mitglied: pieh-ejdsch
10.08.2010 um 12:04 Uhr
Hast Du jetzt mal diese Version genommen

wenn Du das als Batch laufen lässt ist es mit %%i richtig
wenn als Befehlszeilen dann jeweils anstatt den %%i ein %i in die Zeile schreiben

Gruß Phil
Bitte warten ..
Mitglied: Manu123
10.08.2010 um 12:09 Uhr
Ah, da warst du schneller als ich.

ich vermute tmp1 ist gleich tmp, das habe ich mal korrigiert.

>"%temp%\tmp1" echo "<td"
for /f "delims=" %%i in ("Suche.txt") do (echo "%%i"|findstr /b /g:"%temp%\tmp1" >>neu.txt
echo "%%i"|findstr /v "< >">>neu.txt

)

allerdings verstehe ich nicht ganz was du im endeffekt machst .

Ergebnis ist übrigens, dass in der neu.txt

"Suche.txt"

steht. Ich verzweifle
Bitte warten ..
Mitglied: pieh-ejdsch
10.08.2010 um 13:41 Uhr
ich vermute tmp1 ist gleich tmp, das habe ich mal korrigiert.
ja ich hatte das nur so daher geschrieben deshalb ein bisschen Fehlerbehaftet

"Suche.txt" - das war auch mein Fehler.

Ich hatte nur die For-Schleife falsch geschrieben
for /f "delims=" %%i in ("Suche.txt") do
so ist es eine For-Schleife für: "DurchAckern von Zeichenfolgen in Anführungszeichen"
  • ohne "Anführungszeichen um die (Zeichenfolge in der AnweisungsKlammer)
ist es eine For-Schleife fürs: Zeilenweise DurchAckern von Datei(en) ohne Sonder& Leerzeichen im (Pfad-) Namen

richtig ist bei eine For-schleife fürs: "Zeilenweise DurchAckern von Datei(en) mit Sonder& Leerzeichen im (Pfad-) Namen in Anführungszeichen" die verwendung von usebackq hinter /f
so hab ich es oben Korrigiert


heist im Umkerschluss
wenn Deine Du die Anführungszeichen um den "Dateinamen-ohne-Leer-und-Sonderzeichen.txt" entfernst reicht es.

[Edit]
zur Erklärung:
die Zeilen werden mit "delims=" kommplett in die Variable %%i gesetzt
mit | wird die Ausgabe vom Echo als Eingabe von Findstr genommen
in der Datei %temp%\tmp steht auch das einzelne Anführungszeichen des gesamten Suchstrings
welches mit /b /g:%temp%\tmp
vom beginn der Zeile vom Echo (auch mit Anführungszeichen am Anfang und Ende) abgeglichen wird
>> schreibt das Ergebnis vom findstr in die "neu.txt"

auch zu lesen in XP-Hife oder online unter:
Befehlzeilenreferenz A-Z
- Verwenden von Befehlsumleitungsoperatoren
- For
- Findstr
oder im CMD-Fenster mit: Befehl /?
[\Edit]

Gruß Phil
Bitte warten ..
Mitglied: Manu123
10.08.2010 um 14:29 Uhr
Soweit so gut, vielen Dank bis hierhin.

Was ich nun als Ergebnis rausbekomme>

Aus

<td title="test123456678">
test123
...
</td>
<td>12345</td>
<td title="test456">
test456

Wird

" "
" "
" "
" test123"
" ..."
" test456"
" "

Die Leerzeichen hat er wohl im ersten Post nicht mitkopiert, aber das macht ja keinen Unterschied, die bekomme ich problemlos weg. Das Problem ist jetzt, dass ich nicht weiß woher die Anführungszeichen kommen bzw. wie ich sie wegbekomme. Außerdem sind die Zeilen mit <td am Anfang nicht kopiert worden.

grüße
Bitte warten ..
Mitglied: pieh-ejdsch
11.08.2010 um 13:10 Uhr
Moin Manu123,

ich wollte mit dem EscapeZeichen ( ^ ) das folgende UmleitungsZeichen ( < ) fürs ECHO als Normal darzustellendes Zeichen für das ECHO einschliessen.
das hat aber nicht geklappt, weil das Führende Anführungszeichen ( " ) schon dafür gesorgt hatte. (obwohl kein Abschliessendes AnführungsZeichen vorhanden ist - grübel)

es wurde aus dem Ergebnis vom Findstr in die Datei Umgeleitet mit AnführungsZeichen, so wie die Eingabe vom Echo ist.
fürs nichtdarstellen der AnführungsZeichen vom Findstr nehmen wir ein FolgeBefehlWennPositivDann ( && )

Jetzt sogar als geteste BetaVersion:
01.
set Eingabe="E:\AdminHelp\Test.txt" 
02.
set Ausgabe="E:\AdminHelp\neu.txt " 
03.
type nul>%Ausgabe% 
04.
>"%temp%\tmp" echo "<td 
05.
for /f "usebackq delims=" %%i in (%Eingabe%) do (echo "%%i"|findstr /b /g:"%temp%\tmp" &&>>%Ausgabe% echo %%i 
06.
	echo "%%i"|findstr /v "< >"&&>>%Ausgabe% echo %%i 
07.
)
Gruß Phil
Bitte warten ..
Mitglied: Manu123
11.08.2010 um 13:31 Uhr
Moin Phil,

perfekt! Danke Dir vielmals, klappt alles wunderbar
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Zwei fragen zu findstr
gelöst Frage von netlordBatch & Shell8 Kommentare

Hallo Administratoren ;) ich habe zwei Fragen zu findstr 1.) wir haben Rechner mit unterschiedlicher Anzahl von Raid-Controllern. Diese ...

Windows Tools
Findstr und regex
gelöst Frage von tobmesWindows Tools5 Kommentare

Hi Experten, ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die ...

Outlook & Mail
Verknüpfte Kalender verloren - Outlook 2010
Frage von freeskierchrisOutlook & Mail3 Kommentare

Hallo, aus ungeklärter Ursache hat mein Outlook 2010 die.pst-Datei verloren. Nach dem erneuten Hinzufügen der Datendatei, waren alle Verknüpfungen ...

Windows 7
Verknüpften Ordner durchsuchen?
gelöst Frage von fuxxigWindows 73 Kommentare

Hallo zusammen, ich glaube, ich stehe grade auf dem schlauch folgende situation: in einem netzlaufwerk wurde ein ordner angelegt. ...

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 ...