Назад | Перейти на главную страницу

Условные выражения в cmd скриптах

Я пишу сценарии, используя appcmd. Я бы хотел проверить, существует ли данный сайт и выполняет ли какое-либо действие. В этом случае удалите его.

appcmd list app | find "mySite"

Итак, если find "mySite" вернет какой-либо текст, я хотел бы выполнить оператор удаления. Теперь я понимаю, что могу попытаться удалить сайт и проигнорировать ошибку, но это дает (потенциально) запутанный результат.

Я пробовал что-то вроде следующего, где я предполагаю, что просто использовал бы переменную appExists в операторе if, но он просто остается пустым. Всегда.

set appExists=appcmd list app | find "mySite"
echo %~n0: %appExists%

Как я могу этого добиться?

Вы могли сделать:

for /f "delims=" %%f in ('appcmd list app ^| find "mySite"') do (
    set appExists=%%f
)
echo %~n0: %appExists%

Но тогда вы можете пропустить установку переменной окружения и добавить тест if и встроить удаление в цикл for:

for /f "delims=" %%f in ('appcmd list app ^| find "mySite"') do (
    rem appcmd whatever whatever remove %%f here
)

(И проверьте параметры (for /?) использовать delims= и tokens= чтобы получить нужную вам часть линии напрямую).