Я пытаюсь создать простой пакетный файл, чтобы сделать 7zip-архивы из всех файлов в его каталоге.batch for increment value ENABLEDELAYEDEXPANSION
Я хочу 7zip-архивы, чтобы получить имена, как a01.7z, a02.7z, a03.7z ...
Видимо приращением значения в пакетном для-петли ISN Легко.
SETLOCAL решение ENABLEDELAYEDEXPANSION не работает на моем компьютере (окна 10, 64-разрядная версия)
Кто-то предложил поставить инкремента-код в подпрограмме:
set /a counter=0
for %%i in (*.*) do (
call :pass2
goto :cont
:pass2
set /a counter=%counter%+1
goto :EOF
:cont
"c:\Program Files\7-Zip\7z.exe" a a%counter% "%%i"
)
Это не работает потому что почему-то DOS больше не понимает окончательный «%% i» и просто выводит «% i».
Пожалуйста, научите меня, как сделать цикл в партии с помощью счетчика.
EnabledDelayedExpansion включается другой режим. Задержанными переменными являются '! Var!', Который является именем юридической переменной, если отложенное расширение выключено (нормальное состояние). См. 'Set /?' Для справки и объяснения. Обратите внимание, что вы обычно ссылаетесь на переменные '% var%', если вы специально не хотите, чтобы они были расширены во время выполнения. Причина, по которой у вас возникла проблема, - это ваш код в скобках, то есть все эти строки рассматриваются как одна строка. Поэтому переменное расширение происходит, когда этот блок строк читается. –
Ваша подпрограмма неправильная. 1/В скобках 2/Вы передаете '%% I' в качестве параметра подпрограммы, подпрограмма обращается к ней через'% 1'. См. 'Call /?'. 3/Вы помещаете 'Goto: eof' в конце суб. Тогда ваша основная программа затем должна перепрыгнуть через нее (или завершить через 'goto: eof'). См. 'Goto /?'. –
Спасибо, миллион за то, что научил меня вещам! – Hakkelaar