У меня есть вопрос, которого я хочу достичь.

Допустим, сценарий выглядит так:

В BuildFolder есть эти файлы:

Z:\BuildFolder\ Построить # 170
Z:\BuildFolder\ Построить # 171
Z:\BuildFolder\ Построить # 172
Z:\BuildFolder\ Построить # 173
Z:\BuildFolder\ Построить # 174
Z:\BuildFolder\ Changelog
Z:\BuildFolder\ Разное

Чего я хочу достичь в командном файле:

  1. Зацикливание каталога и получить только тот, который начинается с Build # xxx. Я достиг этого с помощью

    for /D %%s in (.\Build#*) do @echo %%s 
    
  2. Как получить последний индекс папки Build, как если бы вы знали, что следующий каталог, который будет создан, это Build # 175?

2 ответа2

1

Возможно, вы могли бы добавить строку в сам цикл, чтобы предсказать, каким может быть следующее значение индекса (при условии, что оно всегда увеличивается на 1).
Я включил фрагмент кода ниже

Добавьте следующую строку в самом начале скрипта

setlocal EnableDelayedExpansion

Затем измените цикл, как указано ниже. Это при условии, что папка всегда будет называться Build #. Следовательно, он пропускает первые 6 символов, чтобы получить значение индекса. Наконец выведите полученное значение +1. Последнее полученное значение будет самым высоким индексом

FOR /D %%s in (".\Build#*") do (
set name=%%~ns
set /a index=!name:~6!
)
set /a nextindex=!index!+1
ECHO next folder is %nextindex%
pause
0

Powershell (как предложил Джулиан Найт):

PS C:\Users\user\Desktop\tmp> Get-ChildItem -Filter 'Build#*'


    Directory: C:\Users\user\Desktop\tmp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        30.03.2015     14:19            Build#170
d----        30.03.2015     14:19            Build#171
d----        30.03.2015     14:19            Build#172
d----        30.03.2015     14:19            Build#173
d----        30.03.2015     14:19            Build#174


PS C:\Users\user\Desktop\tmp> Get-ChildItem -Filter 'Build#*' | select -Last 1


    Directory: C:\Users\user\Desktop\tmp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        30.03.2015     14:19            Build#174


PS C:\Users\user\Desktop\tmp> Get-ChildItem -Filter 'Build#*' | select -Last 1 | format-list *


PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Users\user\Desktop
                    \tmp\Build#174
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Users\user\Desktop
                    \tmp
PSChildName       : Build#174
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : True
BaseName          : Build#174
Mode              : d----
Name              : Build#174
Parent            : tmp
Exists            : True
Root              : C:\
FullName          : C:\Users\user\Desktop\tmp\Build#174
Extension         :
CreationTime      : 30.03.2015 14:19:36
CreationTimeUtc   : 30.03.2015 12:19:36
LastAccessTime    : 30.03.2015 14:19:36
LastAccessTimeUtc : 30.03.2015 12:19:36
LastWriteTime     : 30.03.2015 14:19:36
LastWriteTimeUtc  : 30.03.2015 12:19:36
Attributes        : Directory



PS C:\Users\xnem\Desktop\tmp>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .