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

Findstr kann Dateien nicht finden

Frage Entwicklung Batch & Shell

Mitglied: campari.s

campari.s (Level 1) - Jetzt verbinden

11.07.2011 um 14:30 Uhr, 6711 Aufrufe, 8 Kommentare

Hallo,
ich bin, was das Erstellen von Batchdateien angeht, noch ein blutiger Laie.
Zwar konnte ich mit Hilfe dieses Forums schon mehrfach kleinere Scripte erfolgreich zusammenbasteln, aber im Moment habe ich ein Problem, dass ich selbst nicht lösen kann und hoffe nun, dass mir hier jemand weiterhelfen kann..

Aber nun zum eigentlichen Problem:

Auf einem Server liegen in einem Ordner mehrere hundert Textdateien (xxxxx.txt).
Diese Testdateien möchte ich nun nach einer bestimmten Zeichenfolge durchsuchen.
Wird die Zeichenfolge gefunden, soll der Name der Datei (möglichst ohne Dateiendung) in eine neue Textdatei (z.B. Liste1.txt) geschrieben werden.
Die Datei "Liste1.txt" soll also hinterher alle Dateinamen enthalten, in denen die gesuchte Zeichenfolge gefunden wurde.

Nun konnte ich, mit Hilfe dieses Forums hier, ein Script zusammenstellen, welches die geforderten Aufgaben zwar erfüllt, aber nur, solange das Script im selben Ordner liegt, wie die zu durchsuchenden Textdateien.

Hier das Script:

01.
@echo off 
02.
for /f "delims=" %%a in ('dir /A /B *.txt') do ( 
03.
for /f %%b in ('findstr /i "blabla" "%%~a"') do echo %%~na >> .\auswertung\Liste1.txt 
04.
)
Aus bestimmten Gründen möchte ich das Script aber nicht in dem Ordner auf dem Server ablegen sondern von meinem Client aus starten.

Dazu habe ich auf meinem Client ein Laufwerk zu dem entsprechenden Server verknüpft und das Script in Zeile 2 um den Pfad, in dem die Textdateien stehen erweitert:

01.
@echo off 
02.
for /f "delims=" %%a in ('dir /A /B N:\xxxx\xxxx\*.txt') do ( 
03.
for /f %%b in ('findstr /i "blabla" "%%~a"') do echo %%~na >> .\auswertung\Liste.txt 
04.
)
Leider funktioniert das Script nicht wie gewünscht.

Zwar greift das Script im ersten Teil auf die Textdateien auf dem Server zu, "übergibt" aber nur den Dateinamen an den zweiten Teil.
'findstr' sucht jetzt die Dateien in dem Verzeichnis, aus dem das Script gestartet wurde, kann Diese nicht finden und gibt eine entsprechende Meldung aus.

Ich habe nun schon mehrere Stunden recherchiert. Vielleicht hatte ich die Lösung auch schon vor Augen, kann das Gelesene aber leider nicht in meinem Problem umsetzen.

Es wäre deshalb sehr nett, wenn mir jemand ein paar Tipps geben könnte.

Herzlichen Dank

campari.s
Mitglied: Skyemugen
11.07.2011 um 14:44 Uhr
Aloha,

tja logisch, der Schalter /B nimmt dir sämtliche Pfade einfaches Format

Dein Schalter /A nebenbei bemerkt, erfüllt keinen Zweck, da du nichts spezifisches angibst ...

greetz André

P.S.: Ich liege doch richtig, dass du nur ein paar Tipps wolltest und keine Lösung? *fg* ... gut, als weiteren Tipp wäre da eventuell noch: willst du nicht eigentlich %%~nb in die Liste?

gut, als Lösungsmöglichkeit wäre da "Pfad\%%~a", wenn alles eh nur in einem bekannten Ordner sich befindet oder dir ohne Schalter /B dafür mit skip= und findstr /v oder, oder, oder

[OT] Ich weiß noch, mein erster Thread hier, weswegen ich mich auch anmelden musste, war aufgrund des /B-Schalters *gg*[/OT]

edit: hmm der Schalter /m von Friemler gefällt mir, muss ich mir glatt merken ^_^
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 15:11 Uhr
Hallo campari.s,

wenn Du schon ein Netzlaufwerk erstellt hast, ließe sich das mit einem Oneliner lösen:
findstr /i /m "blabla" "N:\xxxx\xxxx\*.txt" > ".\Auswertung\Liste.txt"
Der Parameter /m sorgt dafür, dass nur die Namen der Dateien, in denen der Suchbegriff gefunden wird, ausgegeben wird. Du kannst sogar mehrere Suchbegriffe angeben, die durch Leerzeichen voneinander getrennt sind. Der Suchbegriff wird bei dieser Syntax als Regulärer Ausdruck behandelt (siehe FINDSTR /?). Um das zu verhindern, füge den Parameter /l hinzu.

Wenn Du nur einen Suchbegriff hast, der aber Leerzeichen enthält, musst Du folgendes verwenden:
findstr /i /m /c:"bla bla" "N:\xxxx\xxxx\*.txt" > ".\Auswertung\Liste.txt"
Um in diesem Fall die Möglichkeit zu haben, mehrere Suchbegriffe zu suchen, gib /c:"xxx" mehrmals an oder erstelle eine Datei mit Suchbegriffen, die Du mit dem Parameter /G:"Dateiname" übergibst. Um dann noch den/die Suchbegriff(e) als Regulären Ausdruck zu behandeln, musst Du zusätzlich den Parameter /r angeben.

Gruß
Friemler
Bitte warten ..
Mitglied: pieh-ejdsch
11.07.2011 um 15:12 Uhr
moin,

kann mann auch mal auf der cmd Abfeuern

01.
(for /f "tokens=1,2 delims=:" %i in ('findstr /b ":" "L:\D (A Bearbeitung)\CMD Befehle\*.cmd"') do findstr /x /c:"%i:%j" "Datei.x" >nul || >&3 echo %i:%j)3>Datei.x
und nur eine Zeile Pro Datei

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
11.07.2011 um 15:20 Uhr
moin Friemler,

hach sowas - es gibt ja schon einen Schalter im Findstr dafür

ich sollte doch mal /? benutzen

Gruß Phil
Bitte warten ..
Mitglied: campari.s
11.07.2011 um 16:54 Uhr
Herzlichen Dank, für Eure Hilfsbereitschaft.

@Friemler

Deinen Vorschlag mit dem Einzeiler habe ich schon gekannt und bisher auch so im Einsatz.

Leider werden dabei immer die kompletten Pfade incl. Dateiname und Dateiendung in 'Liste.txt' geschreiben, weshalb ich vor der Weiterverarbeitung der Datei diese immer zuerst mit einem Editor bearbeiten muß, damit nur noch die reinen Dateinamen ohne Pfad und ohne Dateierweiterung in der Liste stehen.

Die Lösungsansätze von André und Phil kann ich teils nachvollziehen und teils verwirren sie mich noch mehr. Hab Einiges davon getestet - bisher leider ohne Erfolg.

Werd mich in den nächsten Tagen nochmals mit dem Problem beschäftigen, muss mich zwischdurch aber erstmal um einige andere Probleme kümmern, die täglich so auflaufen - aber wem erzähl ich das

Nochmals herzlichen Dank

LG

Werner
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 18:34 Uhr
Hallo Werner,

dann machen wir doch noch ein Schleifchen drumherum . Allerdings wird es dann (weil ich keine Bandwurmzeilen mag) ein Threeliner:
01.
@(for /f "delims=" %%f in ('findstr /i /m "blabla" "N:\xxxx\xxxx\*.txt"') do @( 
02.
   echo %%~nf 
03.
)) > ".\Auswertung\Liste.txt"
Dadurch wird nur noch der Dateiname ohne Dateierweiterung in die Zieldatei geschrieben. Entscheidend dafür ist das n bei %%~nf in Zeile 2. Siehe FOR /?.

Gruß
Friemler


[EDIT]
Script nochmal geändert, damit bei keinem Fund auch keine Ausgabedatei entsteht.
[/EDIT]
Bitte warten ..
Mitglied: campari.s
12.07.2011 um 14:04 Uhr
Hallo Friemler,

hab erst heute Morgen gesehen, dass Du gestern nochmals geantwortet hast.

Hab das vorhin kurz getestet und muß sagen - Du bist mein Held.

Funktioniert wunderbar und macht genau das, was ich mir vorgestellt habe.

Wirklich prima finde ich auch Deine Art Dinge zu erklären, so dass sie auch ein Greenhorn wie ich nachvollziehen kann.

Das soll jetzt keine Kritik an Euch sein, André und Phil. Aber Eure Beiträge hätte ich nur so schnell nicht umsetzen können.

Besonders der von Phil ist schon harter Tobak für jemanden mit meinem Kenntnisstand.
Werde aber trotzdem vesuchen, das Knäuel zu entwirren .

Nochmals herzlichen Dank an alle für Eure Hilfsbereitschaft.

Das Thema werde ich als gelöst markieren.


LG
Werner
Bitte warten ..
Mitglied: Skyemugen
12.07.2011 um 14:36 Uhr
Aloha Werner,

bei mir ist es meist so, dass ich erst einmal etwas ohne große Erklärung poste und dann auf Nachfrage Erklärungen/weitere Details erst abgebe ^_^

greetz André
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Versteckte Dateien finden und wieder sichtbar machen (4)

Frage von pixel0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien zusammenführen inkl. finden von doppelten Einträgen (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst Nicht doppelt vorhandene Dateien (nur Name) finden (4)

Frage von darebo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...