Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   bat смена часового пояса по условию (http://forum.oszone.net/showthread.php?t=335824)

sdaa113 21-07-2018 16:42 2822959

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

Iska 21-07-2018 16:55 2822961

Цитата:

Цитата sdaa113
по условию »

Условие-то какое?

sdaa113 21-07-2018 17:14 2822970

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 2822971

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 2822976

Iska Спасибо за вариант, буду разбираться, пока выдает множество ошибок...

Iska 21-07-2018 18:08 2822977

Цитата:

Цитата sdaa113
пока выдает множество ошибок... »

Покажите.

sdaa113 21-07-2018 18:58 2822981

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

https://ibb.co/iauo8d

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

Iska 21-07-2018 19:11 2822983

sdaa113, это я, балбес, не убрал echo из отладочного варианта. Поправил код выше. Приношу Вам свои извинения.

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

Цитата:

Цитата sdaa113
и префикс exe у tzuntil »

Это лишнее. «.exe» — оставьте.

Цитата:

Цитата sdaa113
но почему то не работает через else, сижу думаю... »

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

sdaa113 21-07-2018 19:18 2822987

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

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

Iska 21-07-2018 19:21 2822989

sdaa113, теперь покажите Ваш код.

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

sdaa113 21-07-2018 19:23 2822990

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

Iska 21-07-2018 19:25 2822992

sdaa113, copy-paste рулит ;).


Время: 18:16.

Время: 18:16.
© OSzone.net 2001-