「Where」コマンドの実行時に成功コードを取得する構文は何ですか?ループを終了するためにそれが必要です。
そして、見つかったファイルのディレクトリを取得する構文は何ですか?
このコマンド:
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:私はできる限りすべてを剥ぎ取った。txtファイル「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