Я пытаюсь найти текущий путь к каталогу и найти определенный файл или каталог, который находится рядом с этим путем. Например: если текущим каталогом скрипта является 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