Wie lautet die Syntax, um beim Ausführen des Befehls "Where" einen Erfolgscode zu erhalten? Ich brauche das, um eine Schleife zu beenden.
Und wie lautet die Syntax, um das Verzeichnis der gefundenen Datei abzurufen?
Dieser Befehl:
WHERE / r "C: \ Dir \ Dir2 FindMe.txt"
zeigt die Datei im Befehlsfenster korrekt an:
C: \ Dir1 \ Dir2 \ Dir3 \ FindMe.txt
Aber was mache ich jetzt? Bitte seien Sie nett, ich bin weniger als ein Anfänger.
BEARBEITEN: Meine Frage ist ähnlich wie https://stackoverflow.com/questions/7562506 , aber in meinem Fall befindet sich die gesuchte Datei nicht im direkten Pfad, sondern oben, oben und unten. Im angegebenen Beispiel könnte sich meine Datei ausgehend von demselben Verzeichnis in C: \ Temp \ Dir1 \ Dir2 \ Dir3 ** \ Dir14 \ Dir15 ** \ FindMe.txt befinden. Das heißt, ich muss zu Dir3 gehen, dort meine Datei mit dem WHERE-Befehl finden und meine Schleife stoppen.
EDIT 2: Ich habe alles ausgezogen, was ich konnte. Erstellen Sie irgendwo eine TXT-Datei "FindMe.txt", platzieren Sie diesen Code als .cmd und ziehen Sie dann eine andere TXT-Datei auf die .cmd-Datei. Mit etwas Glück sollte es mit dem Verzeichnis von FindMe.txt als Antwort aufhören. Was ich brauche, ist der Pseudocode:
@ECHO OFF
SET "cmdPath=%~dp0"
SET "cmdPath=%cmdPath:~0,-1%" ::without back slash
SET "searchPath=%cmdPath%" ::start search here
:loop
IF EXIST "%searchPath%\FindMe.txt" (
set "txtPath=%searchPath%
ECHO txtPath%searchPath%\FindMe.txt
GOTO :EOF
)
IF "%searchPath:~1%" == ":" (
ECHO FindMe.txt not found.
pause
GOTO :EOF
)
echo searchPath=%searchPath%
rem run: WHERE /r "%searchPath%" /q FindMe.txt
rem if successful (found) (
rem run: WHERE /r "%searchPath%" FindMe.txt
rem just keep the path and rename to txtPath
rem goto :eof
CALL :getPath "%searchPath%"
GOTO loop
:end
:getPath
SET "searchPath=%~dp1"
SET "searchPath=%searchPath:~0,-1%"
:end
:eof