MVV писал(а):Пришлось бы писать это дополнительное условие также и в каждой ветке Else[If].
Но не для того конкретного примера
KopBuH писал(а):Скажем, вот на таком практическом примере:
Если нет разницы, пусто ли значение ключа, или он отсутствует совсем, то при использовании в IniRead в качестве дефолтного значения пустого значения можно сделать так:
Код: Выделить всё
If (%OfflineSystemDir% <> "") AND (%OfflineSystemDir% <> %SystemRoot%) Then
SetEnv /EV COMMANDER_OFFLINESYSTEM %OfflineSystemDir%
ElseIf FileExist "C:\Windows" Then
SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf FileExist "D:\Windows" Then
SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf FileExist "E:\Windows" Then
SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf FileExist "F:\Windows" Then
SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows"
EndIf
KopBuH писал(а):вот еще вариант, который я пробовал:
Так работать не будет, поскольку при первом совпадении условия, последующие условия не проверяются. Следовательно, переменные OfflineDirAtDriveC и т.д. нужно присваивать перед условием.
Код: Выделить всё
FileExist OfflineDirAtDriveC C:\Windows
FileExist OfflineDirAtDriveD D:\Windows
FileExist OfflineDirAtDriveE E:\Windows
FileExist OfflineDirAtDriveF F:\Windows
If (%OfflineDirAtDriveC% = 1) AND (%SystemRoot% <> C:\Windows) Then
SetEnv COMMANDER_OFFLINESYSTEM "C:\Windows"
ElseIf (%OfflineDirAtDriveD% = 1) AND (%SystemRoot% <> D:\Windows) Then
SetEnv COMMANDER_OFFLINESYSTEM "D:\Windows"
ElseIf (%OfflineDirAtDriveE% = 1) AND (%SystemRoot% <> E:\Windows) Then
SetEnv COMMANDER_OFFLINESYSTEM "E:\Windows"
ElseIf (%OfflineDirAtDriveF% = 1) AND (%SystemRoot% <> F:\Windows) Then
SetEnv COMMANDER_OFFLINESYSTEM "F:\Windows"
Else
SetEnv /EV COMMANDER_OFFLINESYSTEM "%OfflineSystemDir%"
EndIf
Flasher писал(а):Для меня пока не показателен. Сам же назвал запрос очень специфичным. Я писал про неспецифичные задачи. А то, что используется после запуска, возвращается и без участия Autorun (мы только это обсудили).
Переменные окружения, созданные в скриптах, не могут быть использованы в TC после выхода из скрипта. Функция устраняет это ограничение для тех случаев, когда значение, которое можно получить только внешним скриптом, нужно использовать в дальнейшем в ТС.
Я не могу сейчас сходу придумать такие примеры, однако ввиду универсальности решения, применение наверняка найдется.
KopBuH писал(а):просто Loopback обещал добавить условие сравнения, если ключ в ini файле пустой. а поскольку в Readme.txt ничего не появилось, приходится писать сюда.
Так все уже давно есть, это дефолтное значение, которое записывается в переменную, если ключ отсутствует.