현재 디렉터리 경로를 검색하고 해당 경로에 인접한 특정 파일이나 디렉터리를 찾으려고합니다. 예 : 스크립트의 현재 디렉토리가 C : \ Temp \ Dir1 \ Dir2 \ Dir3 \ Dir4 \ Dir5 \ Dir6 \ Test.bat이고 "jars"가 C : \ Temp \ jars을 찾은 다음 위쪽으로 검색하여 "jars"가있는 디렉토리를 찾으십시오.배치 또는 파일을 사용하여 현재 절대 경로를 검색하여 파일 또는 디렉토리를 찾으십니까?
이것은 구현 한 방법이지만 더 쉽고 간단한 방법이 있는지 궁금합니다.
@echo off
SET TITLE=%~nx0
SET SEARCHFOR=jars\Site.jar
SET MYDIR=%~p0
SET MYDRIVE=%~d0
SET DIRCHAIN=%MYDIR:\= %
:: searches first 4 levels of depth but can be increased if necessary
ECHO Searching in directory chain: %MYDRIVE% %DIRCHAIN%
FOR /F "tokens=1-4 delims= " %%G IN ("%DIRCHAIN%") DO (
if exist %MYDRIVE%\%SEARCHFOR% (
SET APPHOME=%MYDRIVE%
GOTO APPHOMESET
)
if exist %MYDRIVE%\%%G\%SEARCHFOR% (
SET APPHOME=%MYDRIVE%\%%G
GOTO APPHOMESET
)
if exist %MYDRIVE%\%%G\%%H\%SEARCHFOR% (
SET APPHOME=%MYDRIVE%\%%G\%%H\
GOTO APPHOMESET
)
if exist %MYDRIVE%\%%G\%%H\%%I\%SEARCHFOR% (
SET APPHOME=%MYDRIVE%\%%G\%%H\%%I
GOTO APPHOMESET
)
if exist %MYDRIVE%\%%G\%%H\%%I\%%J\%SEARCHFOR% (
SET APPHOME=%MYDRIVE%\%%G\%%H\%%I\%%J
GOTO APPHOMESET
)
GOTO FAILED
)
:FAILED
ECHO Did not discover location of APPHOME containing %SEARCHFOR%
ECHO Searched no deeper than %MYDRIVE%\%%G\%%H\%%I\%%J
:APPHOMESET
SET JREHOME=%APPHOME%\Javasoft\jre
echo APPHOME is %APPHOME%
echo JREHOME is %JREHOME%
pause
가 참 쉽고 간단한 방법이 있습니다 : 유닉스'grep' 사용 '파이썬 또는 돈을 위해 os.walk' 얻을 4NT의 창 인스턴스를 다운로드하거나, 명령을 받아 들여야합니다. 분명히 부르면됩니다. DOS에서'dir/s'을 파일로 파이핑하고'find'를 사용하여 원하는 것을 얻을 수 있다고 생각할 수 있습니다. 그것은 확실히 적은 줄이지만 아마 더 오래 걸릴 것입니다. – Ben
제안 해 주셔서 감사합니다. 그러나이 스크립트의 요점은 APPHOME 및 JREHOME을 동적으로 검색 할뿐만 아니라 사전 요구 사항없이 모든 Windows 시스템에서 실행할 수 있다는 것입니다. 전형적인 재귀 검색은 이것을 효율적으로 수행하지 않을 것입니다. – djangofan