Войти

Показать полную графическую версию : bat смена часового пояса по условию


sdaa113
21-07-2018, 16:42
Всем доброго дня
Уже долгое время ищу решение вопроса наболевшего. Есть программа на компьютере, которой что бы работать нужно менять часовой пояс. Задумал скрипт смены часового пояса по условию между Georgian Standard Time и Russian Standart Time через условие проверки текущего часового пояса. Сначало думал что через переменные (запихнуть часовой пояс и выходить на условие if), но это оказалось невыполнимо.
Кто имел дело, или работал с bat-файлами такого содержания, пожалуйста, подкинте выход из ситуации...

Iska
21-07-2018, 16:55
по условию »
Условие-то какое?

sdaa113
21-07-2018, 17:14
Iska
if "Текущий часовой пояс" = Russian Standart Time
tzutil/s "Georgian Standard Time_dstoff"
else
tzutil/s "Russian Standart Time_dstoff"

Может не соответствовать синтаксису bat файл, приблизительный макет из головы :)
Нужно что бы по нажатию брал текущую timezone, сравнивал с стандартной, если соответствует стандартной - менять на Georgian, если не соответствует - менять на Russian Standart

Iska
21-07-2018, 17:36
sdaa113, Вы понимаете, что если при исполнении «Текущий часовой пояс» окажется любым, кроме Russian Standart Time (а не только предполагаемый Georgian Standard Time), то результатом всегда будет «Russian Standart Time_dstoff»?

Вот примерная болванка:
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (`tzutil.exe /g`) do set sCurrTimeZoneID=%%~i

if defined sCurrTimeZoneID (
if /i "%sCurrTimeZoneID%" equ "Russian Standard Time" (
tzutil.exe /s "Georgian Standard Time_dstoff"
) else (
tzutil.exe /s "Russian Standart Time_dstoff"
)
) else (
echo Can't determine current TimeZoneID
exit /b 1
)

endlocal
exit /b 0

sdaa113
21-07-2018, 18:01
Iska Спасибо за вариант, буду разбираться, пока выдает множество ошибок...

Iska
21-07-2018, 18:08
пока выдает множество ошибок... »
Покажите.

sdaa113
21-07-2018, 18:58
Iska проблема с пробелами была, поправил заработало, осталось как то менять часовые пояса, спасибо огромное за большую часть помощи :)

https://ibb.co/iauo8d

Дошаманил с кодом, убрал echo и префикс exe у tzuntil - заработало в сторону первого условия, но почему то не работает через else, сижу думаю...

Iska
21-07-2018, 19:11
sdaa113, это я, балбес, не убрал echo из отладочного варианта. Поправил код выше (http://forum.oszone.net/post-2822971.html#post2822971). Приношу Вам свои извинения.

sdaa113, старайтесь не давать пакетным файлам имена внутренних или внешних команд, в данном случае — time.bat: это чревато труднораспознаваемыми ошибками.

и префикс exe у tzuntil »
Это лишнее. «.exe» — оставьте.

но почему то не работает через else, сижу думаю... »
Временно закомментируйте первую строку с «@echo off», выполните, когда не выполняется условие с else, покажите скриншот или текст.

sdaa113
21-07-2018, 19:18
iska https://ibb.co/iFoO8d
Поставил Кабулу (+4:30 UTC), и Тбилиси, такая ошибка теперь падает

Iska, нашел ошибку... буква t в слове Russian Standart Zone, нужна была d, все, заработало :) Огромнейшее спасибо за помощь)

Iska
21-07-2018, 19:21
sdaa113, теперь покажите Ваш код.

Ошибка прямо указывает на то, что использован недопустимый параметр. Также там указано, каким образом получить перечисление допустимых параметров.

sdaa113
21-07-2018, 19:23
Iska, все намного комичнее оказалось, в условии после else tzutil.exe /s "Russian Standard Time_dstoff" просто на конце слова Standart нужна была буква d XD

Iska
21-07-2018, 19:25
sdaa113, copy-paste рулит ;).




© OSzone.net 2001-2012