Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Странное поведение bat при logoff

Ответить
Настройки темы
CMD/BAT - Странное поведение bat при logoff

Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет!

Помоги разобраться со странный поведением системы. У меня есть 2 bat-файла.

Первый создает lock.txt каждые 60 секунд
Код: Выделить весь код
:loop
echo %computername% %date% %time% > lock.txt
timeout /t 60
goto loop
Второй - запускает программу и после ее завершения удаляет lock.txt и выходит из системы
Код: Выделить весь код
start /wait QikDesktop.exe

del /f /q lock.txt

logoff
А странность заключается в том, что когда проходить команда logoff, первый bat-ник создает файл вопреки своему таймеру. Без команды выхода из системы, файл удаляется. Это как то можно победить?

Отправлено: 23:15, 01-07-2020

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Для меня стало новостью что в виндах есть команда logoff, в виртуалку лезть лень, посему проверять не буду. Для аналогичного действия всегда использовал shutdown -l.
Однако к батникам. Первый батник использует goto, что вообще не очень красиво и чего следует избегать (не только в батниках, скорее вообще по жизни). Вместо того чтобы создавать бесконечный цикл с таймаутом в хлипком батнике, лучше бы загнать в шедулер одну строчку и отправить ее выполняться каждую минуту. Какой гешефт это будет иметь? Не будет привязки к времени отработки и прорисовки ответов от всех команд, т.о. через шедулер файл на самом деле будет создаваться раз в минуту, а не раз в 60,035 секунд (тысячные приведены для примера, не являются реальным замером). На набольшом промежутке времени это не так уж критично, но если взять хотя бы несколько часов... Ну и вопреки таймеру происходить ничего не будет.
Строчка эта, как я вижу, не только создает, еще и перезаписывает имеющуюся в этом файле информацию, но это как бы не особо критично.
Во втором батнике не вижу ничего криминального, файл удаляется потому что команда на логоф после удаления.

Отправлено: 09:05, 02-07-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата Elven:
Для меня стало новостью что в виндах есть команда logoff »
Код: Выделить весь код
> logoff
'logoff' is not recognized as an internal or external command,
operable program or batch file.
Не уверен, но вроде в более ранних версиях виндоус logoff вроде был.

Последний раз редактировалось Foreigner, 02-07-2020 в 12:40.


Отправлено: 12:34, 02-07-2020 | #3


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Elven:
Для меня стало новостью что в виндах есть команда logoff, в виртуалку лезть лень, посему проверять не буду. Для аналогичного действия всегда использовал shutdown -l.
Однако к батникам. Первый батник использует goto, что вообще не очень красиво и чего следует избегать (не только в батниках, скорее вообще по жизни). Вместо того чтобы создавать бесконечный цикл с таймаутом в хлипком батнике, лучше бы загнать в шедулер одну строчку и отправить ее выполняться каждую минуту. Какой гешефт это будет иметь? Не будет привязки к времени отработки и прорисовки ответов от всех команд, т.о. через шедулер файл на самом деле будет создаваться раз в минуту, а не раз в 60,035 секунд (тысячные приведены для примера, не являются реальным замером). На набольшом промежутке времени это не так уж критично, но если взять хотя бы несколько часов... Ну и вопреки таймеру происходить ничего не будет.
Строчка эта, как я вижу, не только создает, еще и перезаписывает имеющуюся в этом файле информацию, но это как бы не особо критично.
Во втором батнике не вижу ничего криминального, файл удаляется потому что команда на логоф после удаления.
В моем случае через шедулер сделать не получиться, потому что сейчас эти батники запускаются хаотично на десятках ПК с таким же заотичным расписанием работы.

Файл lock и должен удаляться. Попробую заменить logoff, но не думаю, что проблема в этом.

Отправлено: 15:47, 02-07-2020 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать



Цитата pedrosoft:
создает файл вопреки своему таймеру »
да ладно, давайте разберем:
просто пропускаем
:loop
создаем файл с информацией в echo
echo %computername% %date% %time% > lock.txt
ждем 60сек
timeout /t 60
переходим по метке
goto loop

так почему вопреки, через каждые 60сек файл перезаписывается, но создается при запуске bat
Цитата Elven:
в виндах есть команда logoff »
1.jpg

Отправлено: 15:59, 02-07-2020 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата pedrosoft:
Это как то можно победить? »
а что надо-то?

Отправлено: 16:01, 02-07-2020 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата pedrosoft:
сейчас эти батники запускаются хаотично на десятках ПК с таким же заотичным расписанием работы »
тогда думаю надо сначала навести порядок, потому что вы быстрее голову поломаете с такими запусками чем с коверканием батников, тем более что я тоже поддерживаю
Цитата Elven:
лучше бы загнать в шедулер одну строчку и отправить ее выполняться каждую минуту »
если не знаете как это сделать, то вот, например, задание "Proba" на запуск "C:\name.bat" каждую минуту:
Код: Выделить весь код
SCHTASKS /Create /SC MINUTE /MO 1 /TN "Proba" /TR "C:\name.bat"
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:25, 02-07-2020 | #7


Новый участник


Сообщения: 31
Благодарности: 0

Профиль | Отправить PM | Цитировать


alpap спасибо, шедулер я сейчас загнать ну никак не могу.

Подскажите пожалуйста как через цикл for создавать файл каждую минуту? Пробовал таким способом, но работает не корректно - первый раз создает и дальше информация в файле не обновляется.
Код: Выделить весь код
for /l %%a in (0,0,0) do (
	echo %computername% %date% %time% > lock.txt
	ping -n 30 127.0.0.1
)

Отправлено: 23:22, 05-07-2020 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


pedrosoft, обновляется (Вы это можете увидеть по дате-времени создания файла. Просто она у Вас всё время одна и та же — та, что будет на время входа в операторные скобки цикла.

Либо:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /l %%a in (0,0,0) do (
	>"lock.txt" echo !computername! !date! !time!
	ping -n 30 127.0.0.1
)

endlocal
exit /b 0
Либо:
Код: Выделить весь код
for /l %%a in (0,0,0) do (
	>"lock.txt" call echo %%computername%% %%date%% %%time%%
	ping -n 30 127.0.0.1
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:15, 06-07-2020 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Странное поведение bat при logoff

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Странное поведение UPS: отрубается при скачке, но норм работает при отс. от сети Stormax Непонятные проблемы с Железом 16 02-04-2019 14:07
CMD/BAT - [решено] BAT - Странное поведение (CALL IF) Clinik Скриптовые языки администрирования Windows 1 28-02-2017 06:38
Странное поведение при перезагрузке и выключении a.3 Непонятные проблемы с Железом 3 27-05-2014 19:28
[решено] Странное поведение компьютера при запуске. ijjypuk Непонятные проблемы с Железом 52 28-06-2012 12:04
Странное поведение датчика температуры и выключение при нагрузке. BupycNet Разгон, охлаждение и моддинг 10 08-02-2012 15:30




 
Переход