... suche einen Ordner XXX dessen Pfad sich ändern kann...
Hallo ...
... ich würde gern meine Batch erweitern um ihre Anwendung zu vereinfachen.
Bis jetzt muss ich sie öffnen und eingenhändig einen Pfad angeben. So etwa -->
@echo off & setlocal
:: type "YourFolder" Path -------->>
set "Incoming=D:\YourFolder"
if not exist %YourFolder% goto :eof
Diese Eingabe will ich mir sparen und nach dem Ordnernamen (hier "YourFolder") suchen lassen.
Der Pfad ist mir unbekannt und könnte sich eventuel von mal zu mal ändern.
... ich komm einfach net druff ; (
... also wär schön wenn einer eine Idee hätte.
Greetz 3uf0rd
... ich würde gern meine Batch erweitern um ihre Anwendung zu vereinfachen.
Bis jetzt muss ich sie öffnen und eingenhändig einen Pfad angeben. So etwa -->
@echo off & setlocal
:: type "YourFolder" Path -------->>
set "Incoming=D:\YourFolder"
if not exist %YourFolder% goto :eof
Diese Eingabe will ich mir sparen und nach dem Ordnernamen (hier "YourFolder") suchen lassen.
Der Pfad ist mir unbekannt und könnte sich eventuel von mal zu mal ändern.
... ich komm einfach net druff ; (
... also wär schön wenn einer eine Idee hätte.
Greetz 3uf0rd
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50347
Url: https://administrator.de/forum/suche-einen-ordner-xxx-dessen-pfad-sich-aendern-kann-50347.html
Ausgedruckt am: 23.04.2025 um 14:04 Uhr
16 Kommentare
Neuester Kommentar
@miniversum
Nur interessehalber - wozu das "pushd" / "popd"? Ich hätte gedacht,
würde genügen ...
Grüße
bastla
Nur interessehalber - wozu das "pushd" / "popd"? Ich hätte gedacht,
@echo off
set LW=C:
set folder=temp
for /f "delims=" %%i in ('dir /s /b "%LW%\%folder%"') do echo gesuchter Ordner ist in %%~dpi
Grüße
bastla
@bastla
Genau, und da die Variablen nicht als "setlocal" deklariert sind, hat man/frau sie auch noch später zur Verfügung, falls vergessen wurde, wo gesucht wurde...
Sonst würde sich der ganze Aufwand ja auch gar nicht lohnen mit der Variablendefinition...

@3uf0rd
Ich denke, dass die Aufgabe (relativ) unlösbar ist, solange nicht wenigstens von dem gesuchten Ordner sicher bekannt ist, dass er
- entweder immer auf einem bestimmten Laufwerk/unterhalb eines bestimmten Verzeichnisses liegt
- oder dass dieser Ordner auf allen vorhandenen Platten einen ein-eindeutigen Namen hat
Wenn Du nicht wenigstens eine diese Vorgaben erfüllen kannst, wirst Du den Batch interaktiv ("SET /P Startpfad=Ab welchem Lw/Pfad soll gesucht werden?") aufbauen müssen.
Grüße
Biber
Genau, und da die Variablen nicht als "setlocal" deklariert sind, hat man/frau sie auch noch später zur Verfügung, falls vergessen wurde, wo gesucht wurde...
Sonst würde sich der ganze Aufwand ja auch gar nicht lohnen mit der Variablendefinition...
@3uf0rd
Ich denke, dass die Aufgabe (relativ) unlösbar ist, solange nicht wenigstens von dem gesuchten Ordner sicher bekannt ist, dass er
- entweder immer auf einem bestimmten Laufwerk/unterhalb eines bestimmten Verzeichnisses liegt
- oder dass dieser Ordner auf allen vorhandenen Platten einen ein-eindeutigen Namen hat
Wenn Du nicht wenigstens eine diese Vorgaben erfüllen kannst, wirst Du den Batch interaktiv ("SET /P Startpfad=Ab welchem Lw/Pfad soll gesucht werden?") aufbauen müssen.
Grüße
Biber
@Biber
Bei einem (derart kurzen) Oneliner mit besserer Wartbarkeit zu argumentieren, würde mir nie einfallen ...
Grüße
bastla
Bei einem (derart kurzen) Oneliner mit besserer Wartbarkeit zu argumentieren, würde mir nie einfallen ...
Grüße
bastla
@bastla
Angenommen ich bin in einem Unterverzeichnis eines Laufwerkes und suche den Ordner in einem Andern Verzeichnis oder andern Laufwerk. So springe ich halt dan mit pushd schnell mal auf das gesuchte Laufwerk suche was ich brauche udn wechsle mit popd zurück. das cd\ ist dann dafür wenn auf dem Gleichen laufwerk gesucht wird. Ist einfach einfacher (oder wie geht der Spruch?)
Bei dienem Code gehst du ja davon aus das der Ordner direkt im Root-Verzeichnis liegt. ist das ncith der fall würde er nix finden oder?
@Biber
Klar muß es Eindeutig sein. Davon bin ich einfach mal ausgegangen. sonst würde ja jede andere Suchfunktion auch versagen.
miniversum
Angenommen ich bin in einem Unterverzeichnis eines Laufwerkes und suche den Ordner in einem Andern Verzeichnis oder andern Laufwerk. So springe ich halt dan mit pushd schnell mal auf das gesuchte Laufwerk suche was ich brauche udn wechsle mit popd zurück. das cd\ ist dann dafür wenn auf dem Gleichen laufwerk gesucht wird. Ist einfach einfacher (oder wie geht der Spruch?)
Bei dienem Code gehst du ja davon aus das der Ordner direkt im Root-Verzeichnis liegt. ist das ncith der fall würde er nix finden oder?
@Biber
Klar muß es Eindeutig sein. Davon bin ich einfach mal ausgegangen. sonst würde ja jede andere Suchfunktion auch versagen.
miniversum
@miniversum
Grüße
bastla
Bei dienem Code gehst du ja davon aus das der Ordner direkt im Root-Verzeichnis liegt.
Nein.ist das ncith der fall würde er nix finden oder?
Doch.Grüße
bastla
@miniversum
Ich hatte mich anfangs nur gewundert und gedacht, vielleicht selbst etwas lernen zu können (und danach meine Version zur Sicherheit schon getestet gehabt
- daher die etwas restringierte Form meiner Antworten - entschuldige bitte) ...
Grüße
bastla
Ich hatte mich anfangs nur gewundert und gedacht, vielleicht selbst etwas lernen zu können (und danach meine Version zur Sicherheit schon getestet gehabt
Grüße
bastla
Hallo 3uf0rd!
So könnte es gehen (die übrigen Laufwerksbuchstaben musst Du selbst hinzufügen
):
Die Variable %YFPfad% kannst Du dann entsprechend weiterverwenden, aber, entsprechend Biber's Einwand weiter unten, hast Du nur Sicherheit, wenn die Variable %Anzahl% den Wert 1 enthält.
Im Übrigen würde ich Biber's Vorschläge wesentlich eher ernst nehmen, als diese (zumindest von mir) sportlich gemeinte Batch-Variante.
Grüße
bastla
[Edit] Zähler eingebaut. [/Edit]
So könnte es gehen (die übrigen Laufwerksbuchstaben musst Du selbst hinzufügen
@echo off
set /a Anzahl=0
for %%a in (C D E F G H) do (
for /f "delims=" %%i in ('dir /s /b /ad %%a:\*YourFolder* 2^>nul') do set "YFPfad=%%i" & set /a Anzahl+=1
)
echo Gefundener Pfad: %YFPfad%
echo Fundstellen insgesamt: %Anzahl%
Im Übrigen würde ich Biber's Vorschläge wesentlich eher ernst nehmen, als diese (zumindest von mir) sportlich gemeinte Batch-Variante.
Grüße
bastla
[Edit] Zähler eingebaut. [/Edit]
@3uf0rd
Jein... genau das Problem meinte ich vorhin.
Natürlich kannst Du auch auf mehreren Laufwerken nach "YourFolder" suchen (siehe unten bei miniversum).
Solange Du dann insgesamt nur einen YourFolder-Ordner findest, alles prima.
Problem ist: Die Wahrscheinlichkeit steigt, dass Du mehrere "YourFolder"s findest, weil
-der Anwender eine Version 1.2 Deiner App auf c: installiert hat und gerade aber noch auf Laufwerk D: die App 1.3beta ausprobiert...
- der Anwender jeden Freitag abend das komplette Laufwerk C: nach d:\Archiv sichert.
und noch 20 weitere Gründe, die dazu führen können, dass es mehrere "YourFolder" gibt.
Deshalb die Pest-oder-Cholera-Alternative:
- entweder den Benutzer fragen, wo denn gesucht werden soll
- oder irgendwo EINdeutig hinterlegen, wo denn der benutzte aktuelle relevante YourFolder-Pfad ist.
Variante zwei ist die, die die meisten Erwachsenen vorziehen...
-->Registrywert oder Umgebungsvariable für YourFolder setzen.
Gruß
Biber
Ist set LW=C: nicht auch auf folgende Laufwerke anzuwenden ( also D:, E:, F
Sollten diese nicht vorhanden sein, auslassen bei der suche.
Sollten diese nicht vorhanden sein, auslassen bei der suche.
Jein... genau das Problem meinte ich vorhin.
Natürlich kannst Du auch auf mehreren Laufwerken nach "YourFolder" suchen (siehe unten bei miniversum).
Solange Du dann insgesamt nur einen YourFolder-Ordner findest, alles prima.
Problem ist: Die Wahrscheinlichkeit steigt, dass Du mehrere "YourFolder"s findest, weil
-der Anwender eine Version 1.2 Deiner App auf c: installiert hat und gerade aber noch auf Laufwerk D: die App 1.3beta ausprobiert...
- der Anwender jeden Freitag abend das komplette Laufwerk C: nach d:\Archiv sichert.
und noch 20 weitere Gründe, die dazu führen können, dass es mehrere "YourFolder" gibt.
Deshalb die Pest-oder-Cholera-Alternative:
- entweder den Benutzer fragen, wo denn gesucht werden soll
- oder irgendwo EINdeutig hinterlegen, wo denn der benutzte aktuelle relevante YourFolder-Pfad ist.
Variante zwei ist die, die die meisten Erwachsenen vorziehen...
-->Registrywert oder Umgebungsvariable für YourFolder setzen.
Gruß
Biber
@bastla
Ist ja ok. jeder kann ja mal daneben liegen. Und funktionieren tuts ja so oder so...
@3uf0rd
klar kansnt du auch nach "YourFolder" suchen. ichhabe in meinem Beispiel halt nach "temp" gesucht. also ersetzt du mein "temp" duch dein "YourFolder".
Das beispiel ist nur für ein laufwerk. willst du alle durchsuchen müßtest du das in einer Forschleife tun.
@echo off
set folder=YourFolder
for %%L in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist %%L (
for /f "delims=" %%i in ('dir /s /b "%%L\%folder%"') do echo gesuchter Ordner ist in %%~dpi
)
)
miniversum
Ist ja ok. jeder kann ja mal daneben liegen. Und funktionieren tuts ja so oder so...
@3uf0rd
klar kansnt du auch nach "YourFolder" suchen. ichhabe in meinem Beispiel halt nach "temp" gesucht. also ersetzt du mein "temp" duch dein "YourFolder".
Das beispiel ist nur für ein laufwerk. willst du alle durchsuchen müßtest du das in einer Forschleife tun.
@echo off
set folder=YourFolder
for %%L in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist %%L (
for /f "delims=" %%i in ('dir /s /b "%%L\%folder%"') do echo gesuchter Ordner ist in %%~dpi
)
)
miniversum
Moin 3uf0rd,
danke für's Posten Deiner Lösung.
Anmerkung: diese beiden Zeilen könnten entfallen (kein sittlicher Nährwert):
[Gehässige Anmerkung II: der entstandene freie Platz könnte für Kommentarzeilen genutzt werden..
]
Wenn es Dir Recht ist und der Beitrag auch aus Deiner Sicht gelöst ist, würde ich den gerne schließen. Werde einen "grünen Haken" als entsprechendes Signal werten...
Gruss
Biber
danke für's Posten Deiner Lösung.
Anmerkung: diese beiden Zeilen könnten entfallen (kein sittlicher Nährwert):
if exist %Incoming% dir /b /A:-d %Incoming%>nul 2>nul && goto :m0ve
:m0ve
:m0ve
[Gehässige Anmerkung II: der entstandene freie Platz könnte für Kommentarzeilen genutzt werden..
Wenn es Dir Recht ist und der Beitrag auch aus Deiner Sicht gelöst ist, würde ich den gerne schließen. Werde einen "grünen Haken" als entsprechendes Signal werten...
Gruss
Biber