Войти

Показать полную графическую версию : [решено] бесконечный цикл выполнения из bat


n_i_x
23-08-2010, 09:35
здравствуйте!

Имеется bat файл, который "банит" по мак адресу некоторые ip в локальной сети.

Как можно сделать, так что бы этот файл работал бесконечно, то есть постоянно скрыто выполнял свои команды с 1 по x ??

sLiDeR-X
23-08-2010, 10:02
n_i_x, структура:
@echo off
chcp 866 >nul
set time=5
:loop

echo Здесь вставьте ваши команды. Повтор каждые %time% секунд.

ping 127.0.0.1 -n %time% >nul
Goto :loop
Здесь 5 - это 5 секунд паузы

Если нужно скрыто запускать, то используйте программу hidcon. Например так:
hidcon ban.cmd

n_i_x
23-08-2010, 10:06
всё отлично работает спасибо!!!! со скрытием решил проблему через hidcon.exe

pedrosoft
21-06-2020, 15:31
Добрый день!

А как то можно часть кода выполнять в цикле, а часть вне цикла? Например каждую минуту создавать файл:

:loop
echo %computername% > "Z:\temp\file.lock"
timeout /t 60
goto loop

, но при этом выполнять другие команды:

cd /d D:\server\
start /wait StopServer.exe

timeout /t 4

del /f /q Z:\temp\file.lock

logoff

alpap
21-06-2020, 16:43
@echo off
cmd /c for /l %%i in () do @^>nul ping -n 3 127.0.0.1^&^
rem:^>"file.txt"^& echo Создан "file.txt"^&^
echo ------------------^&^
echo Hello!^&^
echo ------------------^&^
^(for %%a in (1 2) do @echo %%a^)^&^
echo:
pause

pedrosoft
22-06-2020, 14:45
alpap спасибо, могли бы мне помочь чуть разобраться куда мне вставить свою часть кода:
cd /d D:\server\
start /wait StopServer.exe

timeout /t 4

del /f /q Z:\temp\file.lock

logoff

alpap
22-06-2020, 21:36
в любое место после 2-й строки, но это [timeout /t 4] придется убрать, время определяется тут: ping -n 3 для всех команд или вернее будет функции.
И вообще непонятно использование start /wait и timeout, какой смысл в этом, делайте удаление по отсутствию ошибки после запуска чего-то, вернее будет - не?

pedrosoft
23-06-2020, 13:23
alpap похоже это не работает так как мне нужно, сейчас опишу подробнее. Мне нужно, чтобы файл создавался циклически вне зависимости от других команд. Например вначале скрипта идет код по созданию файла каждую минуту, а далее я выполняю свои команды:

@rem
@rem тут какой то хитрый алгоритм, который каждую минуту создает файл Z:\temp\file.lock и не влияет на работу кода ниже
@rem

@rem запускаю службу
net start Service
@rem жду чтобы служба подцепила оборудование
timeout /t 4
@rem запускаю приложение и жду окончание его работы
start /wait Desktop.exe
@rem после окончания работы приложения останавливаю службу, удаляю файл и выхожу из системы
net stop Service
del /f /q Z:\temp\file.lock
logoff


Так вообще возможно сделать? Спасибо за помощь!

alpap
23-06-2020, 21:20
Так вообще возможно сделать? »
я уже пояснял, в bat команды выполняются по порядку и по мере поступления, т.е. все следующие команды будут выполнены после
созданию файла каждую минуту »
т.е. через минуту, поэтому это будет единым кодом который выполняет все команды внутри раз в минуту. И все это будет работать если этот bat будет постоянно запущен, естественно. Вот если bat будет запускать что-то извне, например планировщик, то с одной стороны все равно запуск, допустим тоже каждую минуту, но сделав несколько заданий можно сделать несколько нужных временных диапазонов, так меньше нагрузка на процессор чем если делать несколько bat с разным запуском и все держать в запущенном виде.

Iska
24-06-2020, 00:13
Угу. Или переходить на WSH+Wbem или на PoSH.




© OSzone.net 2001-2012