следующая, предыдущая параллельная папка - PullRequest
1 голос
/ 06 августа 2010

Я пытаюсь сделать относительный ярлык, используя пакетный файл и программу, чтобы превратить пакет в исполняемую программу со значком.

Мне нужен ярлык, чтобы открыть следующую алфавитную параллельную папку вокно проводника и одно открытое предыдущее.В идеале я бы даже хотел закрыть окно проводника, которое использовалось для двойного щелчка.

Пока у меня есть:

@echo off
echo %cd%
for %%a in ("%cd%") do set folder=%%~na
pushd ..
echo %folder%
echo .
dir /A:D /B
pause

% folder% имеет имя папки (не путь).!) откуда выполняется партия

строка: dir / A: D / B дает вывод нескольких строк, давая вам все параллельные папки (потому что я поднимаюсь на уровень с помощью pushd ..).Мне действительно нужно найти способ поиска значения% fodler% и выбрать строку выше или ниже.

Я пытался что-то использовать для / f, но это не так полезно при обработке нескольких строк вместоодна строка.

Любые идеи?

1 Ответ

0 голосов
/ 07 августа 2010

Хотя мне не совсем ясно, чего именно вы хотите достичь, следующий фрагмент должен делать то, что вы хотите.Просто добавьте его в ваш скрипт:

setlocal enabledelayedexpansion

for /f %%a in ('dir /b /ad /on') do (

   @rem shift the current value through the variables
   set previous=!current!
   set current=!next!
   set next=%%a

   @rem check if the "current" value is the right one
   if "!current!"=="%folder%" goto :found
)

@rem if we get here the loop has finished without %current% having the expected value
@rem but we need to check if it was the last folder in the directory
if "%next%"=="%folder%" (
    set previous=%current%
    set current=%next%
    set next=
    goto :found
)

endlocal

@rem exit here if no match is found (should never happen)
goto :eof

@rem variables should have valid values
:found
echo %previous%
echo %current%
echo %next%

Объяснение:

3 переменные previous, current и next используются как регистр сдвига,В каждой итерации цикла текущее значение каталога смещается на одно место через переменные

. В конце смещения переменная current проверяется на наличие нужной папки

Если цикл заканчивается раньшеусловие истинно, это означает, что последняя папка является правильной, следовательно, конечные сдвиги.

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...