Каков синтаксис для получения кода успеха при выполнении команды "Где"? Мне нужно, чтобы закончить цикл.
А какой синтаксис для получения каталога найденного файла?
Эта команда:
WHERE /r "C:\Dir\Dir2 FindMe.txt"
правильно показывает файл в командном окне:
C:\Dir1\Dir2\ DIR3\ FindMe.txt
Но что мне теперь делать? Пожалуйста, будьте добры, я не новичок.
РЕДАКТИРОВАТЬ: мой вопрос похож на https://stackoverflow.com/questions/7562506, но в моем случае файл, который я ищу, находится не по прямому пути, а вверх, вверх, а затем вниз. Если взять приведенный пример и начать с того же каталога, мой файл может находиться в C:\Temp\Dir1\Dir2\Dir3 **\Dir14\Dir15 **\FindMe.txt. Это означает, что мне нужно перейти к Dir3, там найти мой файл с командой WHERE и остановить цикл.
РЕДАКТИРОВАТЬ 2: Я снял все, что мог. Создайте где-нибудь текстовый файл «FindMe.txt», поместите этот код в другом месте как .cmd, а затем перетащите другой файл .txt в файл .cmd. Если повезет, он должен остановиться на каталоге FindMe.txt в качестве ответа. Что мне нужно помочь, так это псевдокод:
@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