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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: StefanKittel
StefanKittel 24.08.2011 um 00:34:34 Uhr
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.
Mitglied: Biber
Biber 24.08.2011 um 00:44:30 Uhr
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
Mitglied: bastla
bastla 24.08.2011 um 00:46:44 Uhr
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 24.08.2011 um 01:03:23 Uhr
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ß
Mitglied: Skyemugen
Skyemugen 24.08.2011 um 07:49:25 Uhr
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]
Mitglied: Dell-XPS
Dell-XPS 24.08.2011 um 11:00:15 Uhr
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
Mitglied: bastla
bastla 24.08.2011 um 11:08:25 Uhr
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
Mitglied: Dell-XPS
Dell-XPS 25.08.2011 um 07:40:03 Uhr
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