Показать полную графическую версию : [решено] EnableDelayedExpansion и For
tarasov.evgeny
25-10-2013, 12:38
Не могу понять почему с включенном параметром EnableDelayedExpansion не работает часть скрипта.
не работает
@echo off
setLocal EnableDelayExpansion
for %%i in (%systemroot%\tasks\*.job) do schtasks /change /tn %%~ni /ru Admin /rp Pass1
Пишет нет доступа
С отключенным setLocal работает.
пробовал менять %systemroot% на полный путь или менять % на ! положительного результата не принесло.
tarasov.evgeny, Вы не могли бы просто копировать текст кода, а не набирать вручную?
…с включенном параметром EnableDelayedExpansion…
…
setLocal EnableDelayExpansion
… »
может сравнить?
@echo off
(
setLocal DisableDelayedExpansion
for %%i in (%systemroot%\tasks\*.job) do echo schtasks /change /tn %%~ni /ru Admin /rp Pass1
)>dde.cmd
(
setLocal EnableDelayedExpansion
for %%i in (%systemroot%\tasks\*.job) do echo schtasks /change /tn %%~ni /ru Admin /rp Pass1
)>ede.cmd
tarasov.evgeny
25-10-2013, 15:23
Iska, amel27,
Благодарю за помощь. Ошибка заключалась в том, что в реальном пароле был восклицательный знак !, который съедался. Я взял пароль в "" и всё заработало.
Сработало один раз, продолжаем думать думы.
tarasov.evgeny, Вы не могли бы просто копировать текст кода, а не набирать вручную? »
Спасибо за совет, была причина, по которой пришлось набирать в ручную. Обычно я так не делаю.
может сравнить? »
Нашел ошибку в первую очередь благодаря вашему совету, но способ я не понял. На выходе два файла, которые я сравнил в ручную и нашел ошибку. Я не думаю, что Вы советовали именно такое решение
Насколько я понял (поправьте, если я ошибаюсь) , знак "!" никак экранировать нельзя. Либо менять пароль, либо отключать выполнение EnableDelayedExpansion.
Не проверял, но вроде тройным экранированием можно -
^^^!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.