dell-xps
Goto Top

Falscher Ordner wir mit ausgegeben

Hey Leute

Und zwar hab ich folgendes Problem. Ich lese einige Ordnerinhalte ein. Dabei sieht die Struktur so aus:

Ein Überordner -> in dem Ordner sind wiederrum Ordner (heißen wie folgt: 987ST, 721MN, 212ht und 121en) -> in den Ordner sind einige Sprach-Ordner (heißen wie folgt: de, en, es, fr) und in diesen Ordnern sind Dokumente, Bilder etc.

Nun zu meinem Anliegen:

Ich lese die Ordner ein, mit einer FOR Schleife und einem findstr der zuvor ausgewählten Sprache. Wenn ich jetzt aber die Sprache "en“ auswähle, wird automatisch durch findstr der Ordner 121en ausgegeben. Das findstr sucht also im Pfad nach Unterordnern und da das 121en ein "en" am Schluss hat wird der Ordner komplett ausgegeben!

Lässt sich das irgendwie vermeiden? Hab schon mit ner IF-Abfrage probiert und mit z.B. findstr /b und so. Hat alles nichts geholfen!

MfG

Content-Key: 171962

Url: https://administrator.de/contentid/171962

Printed on: April 23, 2024 at 23:04 o'clock

Member: StefanKittel
StefanKittel Aug 23, 2011 at 22:34:34 (UTC)
Goto Top
Zitat von @Dell-XPS:
Und zwar hab ich folgendes Problem. Ich lese einige Ordnerinhalte ein.
Und wie? VB, Batch, etc?
Und woher? Klingt nach einer Liste. Warum durchsuchst Du die Ordner nicht recursiv? Dann weißt Du gleich wo was hinkommt.

Ich lese die Ordner ein, mit einer FOR Schleife und einem findstr der zuvor ausgewählten Sprache. Wenn ich jetzt aber die
Sprache "en“ auswähle, wird automatisch durch findstr der Ordner 121en ausgegeben. Das findstr sucht also im Pfad
nach Unterordnern und da das 121en ein "en" am Schluss hat wird der Ordner komplett ausgegeben!
Lässt sich das irgendwie vermeiden? Hab schon mit ner IF-Abfrage probiert und mit z.B. findstr /b und so. Hat alles nichts
geholfen!
Stell doch Deinem Suchstring ein Backslash an den Anfang und ans Ende.
Such also nach "\121\".

Stefan.
Member: Biber
Biber Aug 23, 2011 at 22:44:30 (UTC)
Goto Top
Moin Dell-XPS,

es gibt wie im richtigen Leben mehrere Möglichkeiten, diese Prüfung einzubauen.

Du kannst sowohl findstr nutzen und
  • den Suchstring ("en","fr", "de" oder "es") ändern in "^en$","^fr$", "^de$" oder "^es$" und den Unterordnernamen prüfen
  • oder den String "vollständigerPfad" durchsuchen nach "\en" , "\de" etc --- denn der Pfad lautet ja z.B. "...\test\121en" oder aber "...\test\721mn\en" -> "\en" ist nur im 2.Fall gegeben
  • oder aber du prüfst auf Gleichheit mit einer IF-Prüfung
Proof-of-concept in deinem Überordner vom CMD-Prompt aus
for /r /d %i in (*) do @if "%~ni"=="en" echo hier bei [%i] ist ein Unterordner=en

Grüße
Biber
Member: bastla
bastla Aug 23, 2011 at 22:46:44 (UTC)
Goto Top
... oder einfach
dir /s /b /ad "D:\Überordner\en"
[OT] @skye: Machst Du dafür auch einen Counter? face-wink [/OT]

Grüße
bastla
Mitglied: 99045
99045 Aug 23, 2011 at 23:03:23 (UTC)
Goto Top
Moin, Dell-XPS und willkommen im Forum.

Versuch's doch mal so:

dir {LW:\Anfangspfad] /b /s | findstr /C:\en\

An Stelle von \en\ dann bei Bedarf die andere gewünschte Sprache einsetzen.

Gruß
Member: Skyemugen
Skyemugen Aug 24, 2011 at 05:49:25 (UTC)
Goto Top
Zitat von @bastla:
[OT] @skye: Machst Du dafür auch einen Counter? face-wink [/OT]

[OT]Aloha bastla,

Hmm... bring mich nicht auf dumme Gedanken hm, dirsubfolder(?) set "dsf+=1" face-wink

Aber mittendrin anfangen zu zählen ... call set zu finden ist einfacher *gg* und jedes Mal danach zu schauen ... anstrengend face-wink zähl ich jetzt das einmalige Vorkommen pro Thread oder in jedem Code pro Kommentar ... *grübel*

greetz André[/OT]
Member: Dell-XPS
Dell-XPS Aug 24, 2011 at 09:00:15 (UTC)
Goto Top
hey leute,
danke für eure Tipps, habs mit dennen mal versucht, aba war nicht so das richtige oder ich habs falsch verstandenface-smile

ich habs inzwischen selber rausgefunden!

und zwar ich füg ich bei findstr zur Sprache einfach folgendes hinzu:
zurerst kommt ja die for Schleife dann das "dir" zur Auflistung und zu guter letzt findstr. findstr, sieht so aus: |findstr /i /e "\%SPRACHE%". Durch den Backslash sicht er nur nach der Sprach, also z.B. \en . So kann nur der Ordner "en" ausgewählt werden und nicht der andere "121en".

Trotzdem danke an alle die sich gedanken gemacht haben!
Gruß Sandy
Member: bastla
bastla Aug 24, 2011 at 09:08:25 (UTC)
Goto Top
Hallo Dell-XPS!

Und Du hattest tatsächlich mit
for /f "delims=" %%i in ('dir /s /b /ad "D:\Überordner\%SPRACHE%"') do ...
- unter der Annahme, dass %SPRACHE% zB "en" (natürlich ohne Anführungszeichen) enthält - keinen Erfolg?

Grüße
bastla

P.S.:
ich habs inzwischen selber rausgefunden!
... dass Bibers zweiter Vorschlag - wie auch jeder seiner weiteren Ansätze - für Dich passt? face-wink
Member: Dell-XPS
Dell-XPS Aug 25, 2011 at 05:40:03 (UTC)
Goto Top
hey,
ne damit hat ich keinen Erfolg!

ach stimmt jetzt hab ich den Vorlschlag von Biber verstanden. Ich hab ihn mir paar mal durchgelesen und dann bin ich auch selber darauf gekommen mit Backslash abzufragen.

Aber dann halt ein extra großes Dankeschön an Biber. face-wink
Gruß Sandy