У меня есть текстовый файл с именами обновления MS Windows:Переменная не работает внутри, если заявление, когда используется в цикле с enabledelayedexpansion
...
KB3072019
KB3044374
KB3011780
KB3083711
...
И имея папку с
:
Моя цель - проверить, обновляется ли загрузка или нет в соответствии с текстовым файлом.
@echo off
set /a x=0
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%A in (d:\WindowsUpdate.log) do (
set /a x=x+1
echo Update number !x!, name %%A, state:
IF EXIST d:\!Del\Win8Updates_x64\Merged\*%%A*.cab (echo Downloaded) ELSE (echo MISSING!)
)
pause
Результат должен быть таким:
Update number 83, name KB3045999, state:
MISSING
Update number 84, name KB3045746, state:
Downloaded
Update number 85, name KB3066441, state:
Downloaded
Update number 86, name KB3071663, state:
MISSING
Но на самом деле это выглядит следующим образом:
Update number 83, name KB3045999, state:
MISSING
Update number 84, name KB3045746, state:
MISSING
Update number 85, name KB3066441, state:
MISSING
Update number 86, name KB3071663, state:
MISSING
Мой вопрос: почему %% А, не работает внутри, если заявление?
Важно: Я не хочу пропустить номера строк, потому что они представляют порядок обновлений. Позже я изменить сценарий, чтобы скопировать/переместить существующие обновления в другое место с приставкой это порядковый номер, как 83_windows8.1-kb3045999-x64.cab
Отлично, спасибо большое, удаление или замена '!' 'С ^!' Решить эту проблему! Мне определенно нужно прекратить использование восклицательных знаков в моем коде. :) – Paleee