Отложенное расширение требуется только в цикле, если вам нужен доступ к переменной, которую вы назначаете внутри цикла.Но нет необходимости в вашем случае.
Вам необходимо сначала получить правильный синтаксис 7z.Ваш исходный код пытался поместить все файлы в текущем каталоге в один zip-файл, потому что вы не указали имя файла.Также ваш ZIPNAME не был инициализирован.Вы хотите что-то вроде следующего.
7z a -tzip zipname filename
Я предполагаю, что вы хотите, чтобы имя zip совпадало с исходным именем файла, за исключением префикса .zip вместо .txt.Тогда все, что вам нужно, это модификатор ~ n, который дает базовое имя без префикса.7-Zip автоматически добавит расширение .zip.
for %%i in (*.txt) do 7z a -tzip %%~ni %%i
Если вы хотите, вы можете добавить опцию -mx0, которая не выполняет сжатие.Я не могу представить, почему вы сделали бы это для текстового файла.
for %%i in (*.txt) do 7z a -mx0 -tzip %%~ni %%i
Если вы хотите добавить свое собственное сообщение
for %%i in (*.txt) do (
7z a -mx0 -tzip %%~ni %%i
echo %%i zipped into %%~ni.zip
)