как найти 3-й каталог из пакетного скрипта на основе самого себя -% 0 - PullRequest
1 голос
/ 20 июня 2011

Это работает, когда файл вызывается из той же директории, где он находится:

    @ECHO OFF
    set _MyCurrentPath=%CD%
    pushd ..
    set _Level1UpDir=%CD%
    ECHO _Level1UpDir: %_Level1UpDir%
    pushd ..
    set _Level2UpDir=%CD%
    ECHO _Level2UpDir: %_Level2UpDir%
    pushd ..
    set _Level3UpDir=%CD%
    ECHO _Level3UpDir: %_Level3UpDir%
    PAUSE

Но как повысить n-й уровень только с% 0 ... потребовался бы какой-нибудь необычный вызов с / f %% в

Моя стратегия состояла в том, чтобы посчитать количество обратных слэшей и цикл в секунду следующим образом: SET count = 1 FOR / f "токены = 1-4 delims =." %% G IN ('echo% 0') DO (вызов: подпрограмма "%% G") GOTO: eof

:subroutine
echo %count%:%1
set /a count+=1
pause
GOTO :eof

Ответы [ 3 ]

3 голосов
/ 20 июня 2011

Что не так с путем .\..\..\.. (повторяйте .. столько раз, сколько хотите, в цикле)?

Вот пакет код для повторения строки N раз

Если вам нужен полностью расширенный путь, вы можете попробовать тильда-расширение . Например: %~dp0 будет %0 расширен до полного пути.

Я часто помещаю CD %~dp0 вверху моих пакетных файлов, если они содержат пути относительно самого пакетного файла.

Таким образом, вы можете использовать %~dp0\..\..\.., чтобы получить полный путь, а затем 3 оттуда.

1 голос
/ 21 июня 2011

Просто для упрощения копирования и вставки: это было самое короткое решение, которое я нашел на основе воспроизведения jwd:

cd %~dp0
for /L %%i in (1,1,3) do pushd ..
set _MyDir3LevelsUp=%CD%
0 голосов
/ 23 июня 2011
            @echo off
            ::File:FileCounter.cmd how-to count from for loop in cmd


            SET count=1
            FOR /L %%G IN (1,1,3) DO (call :LabelGoUpOnce "%%G")
            echo Hit a key to continue

            echo Dir3LevelsUp %Dir3LevelsUp%

            pause >nul
            GOTO :eof
            :LabelGoUpOnce
            pushd ..
            echo CD IS %CD%
            set Dir3LevelsUp=%CD%
            echo %count%:%1

            set /a count+=1
            GOTO :eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...