2017-02-15 2 views
0

Могу ли я узнать, как получить последнюю папку с именем «FullBuild» из пути к проекту?Получить существующую папку в пакетном сценарии

В моей/PROJ пути, есть 5 папок состоит из 'Build' или папки 'FullBuild' следующим образом:

  1. 2017-02-01_10-00 | -Build_110053
  2. 2017-02- 02_10-00 | -FullBuild_120043
  3. 2017-02-03_10-00 | -Build_105043
  4. 2017-02-04_10-00 | -FullBuild_120043
  5. 2017-02-05_10-00 | -Build_105043

Моя команда попытка

for /f "delims=" %%F in ('dir /a:d /b /o:d "%PROJ%\*\FullBuild_*"') do set "lastFullBuild=%%F" 
echo Last Full Build is: %lastFullBuild% 

Имя файла, имени папки или синтаксис метки тома неправильно. Последний полный билд 2017-02-05_10-00

ответ

1
@ECHO Off 
SETLOCAL 
SET "sourcedir=U:\sourcedir\project" 
SET "fullbuild=None found" 
FOR /f "delims=" %%a IN (
'dir /b /ad /o-n "%sourcedir%\*" 2^>nul' 
) DO (
FOR /f "delims=" %%f IN (
    'dir /b /ad "%sourcedir%\%%a\Fullbuild_*" 2^>nul' 
) DO SET "fullbuild=%%a"&GOTO found 
) 
) 

:found 
ECHO Last full build : %fullbuild% 

GOTO :EOF 

Вы должны были бы изменить установку sourcedir в соответствии с вашими обстоятельствами.

Sunce ваши родительские имена каталогов для каталога fullbuild отформатированы как YYYYMMDDhhmm, а затем чтение этих каталогов в порядке обратного имени (/ o-n) будет обрабатываться в порядке обратного порядка.

С каждым именем-каталогом в %%a, см. Ниже под ним расположен каталог fullbuild. Если есть, назначьте имя родителя и завершите цикл с помощью этого имени в fullbuild. Если вообще нет каталогов fullbuild, значение None found сохранится в циклах.

Обратите внимание: использование 2^>nul в командах dir для подавления сообщения об ошибке не должно быть найдено. 2>nul подавляет отчет об ошибке, и каретка избегает перенаправления, чтобы сообщить cmd, что перенаправитель является частью dir, а не for.

Смежные вопросы