ไวยากรณ์เพื่อรับรหัสสำเร็จเมื่อใช้คำสั่ง "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