Я щойно додав !
до змінних в FOR
циклі, щоб переконатися, що всі вони розгорнуті під час виконання в циклі, щоб переконатися, що нові задані значення читаються відповідно, щоб допомогти отримати остаточне !maxfile!
значення за кожною ітерацією циклу.
Крім того, я додав CD /D "%%~F0"
рядок над початком FOR
циклу, щоб переконатися, що каталог змінено на каталог, в якому знаходиться скрипт, оскільки ви чітко не вказуєте каталог у своєму прикладі команд, але я також додав явний приклад сценарію нижче.
Пакетний сценарій (неявний)
SETLOCAL ENABLEDELAYEDEXPANSION
SET "maxfile=1"
cd /d "%%~F0"
for /f %%i in ('dir /b note_*.txt') do (
SET "archivename=%%~ni"
SET "archivenumber=!archivename:~5!"
if !archivenumber! GTR !maxfile! SET /a maxfile=!archivenumber!+1
)
echo !maxfile!
ENDLOCAL
Пакетний сценарій (явно)
SETLOCAL ENABLEDELAYEDEXPANSION
SET "maxfile=1"
SET "srcdir=C:\Folder\Path"
for /f %%i in ('dir /b "%srcdir%\note_*.txt"') do (
SET "archivename=%%~ni"
SET "archivenumber=!archivename:~5!"
if !archivenumber! GTR !maxfile! SET /a maxfile=!archivenumber!+1
)
echo !maxfile!
ENDLOCAL
Подальші ресурси
EnableDelayedExpansion
Затримка розширення призведе до розширення змінних у пакетному файлі на час виконання, а не на час аналізу, цей параметр увімкнено командою SETLOCAL EnableDelayedExpansion.
Коли діє затримка розширення, змінні можна негайно прочитати за допомогою! Змінної_імені! ви також можете прочитати та використовувати% змінної_імен%, яка покаже початкове значення (розгорнуте на початку рядка).
Для
Змінні заміни (ЗА /?)
Крім того, було підсилено заміну FOR змінних посилань. Тепер ви можете використовувати наступний необов'язковий синтаксис:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path namey
echo !archivenumber!>>log.txt
для кожної змінної, а потім перегляньте цей журнал після його запуску. Якщо ви повторюєте ті самі змінні зі%
знаками, а не над!
та переглядаєте журнал, тепер ви побачите відмінності. Дайте мені знати, чи можу я допомогти уточнити далі, але це має бути все, що є в цьому.