Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 5

Автор: igor_andreev
Дата сообщения: 07.06.2008 08:55
JohnRD

Цитата:
скажите как скрипт заставить удалять те файлы которые были отправлены по FTP? вставлял я del уже но толку нету,

В метке :inn последней строчкой добавь в скрипт *.ftp удаление, после put

Код:
...
echo put %2>>"%d%%1.ftp"
echo ! del %2>>"%d%%1.ftp"
Автор: Diman_tlt
Дата сообщения: 07.06.2008 08:59
Serhi84


Цитата:
Или тебе надо все, даже выключенные


будет интересно узнать, как просмотреть выключенные компы в домене, подскажи если есть такая возможность

Еще скажите пожалуйста как выгружать txt с именем файла даты и времени выгрузки,
> %date%.txt это понятно, а время?
Автор: JohnRD
Дата сообщения: 07.06.2008 09:11
Diman_tlt
в шапке есть пример написанный KapralBel


Код: @Echo Off
Set cWork=0
For /l %%a In (1,1,100) Do Call :CompWork 192.168.1.%%a
If %cWork%==0
GoTo :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >> result.txt
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1)
GoTo :EOF
Автор: Diman_tlt
Дата сообщения: 07.06.2008 10:08
JohnRD

Спасибо!
Автор: 01MDM
Дата сообщения: 07.06.2008 10:25
igor_andreev

Цитата:
Восклицательный знак в начале строки фтп-скрипта - это для ftp.exe временный выход в среду cmd.


Хм. Красиво. Матчасть.

Автор: 4aplin
Дата сообщения: 07.06.2008 11:25
Joolz
Спасибо!! Принцып я понял.. Дальше наверное разберусь
Автор: Joolz
Дата сообщения: 07.06.2008 12:06
4aplin
Если разберешься, выложи плз код хотябы в личку, а то я посмотрел на этот eventtrigger, и его смысла не понял. Ну вешает он в планировщике новое задание, но как оно работает для меня осталось загадкой. Вешали и на system error и на warning ничего из этого не получил. Потестил, потестил и забил, пока обхожусь стандартными cmd-шными утилитами и помощью форума.
KnowledgeBase Event Repository может пригодицца.
Автор: JohnRD
Дата сообщения: 07.06.2008 17:30
Diman_tlt


Цитата:
Еще скажите пожалуйста как выгружать txt с именем файла даты и времени выгрузки,
> %date%.txt это понятно, а время?



Код: @echo off
set t=%time: =0%
set s=%t:,=%
set s1=%s::=%
set s2=%s1::=%
set d1=%date:~-4%%date:~3,2%%date:~0,2%
echo >%d1%_%s2%.txt
Автор: HelioSS
Дата сообщения: 08.06.2008 00:29
Elroir

Спасибо большое за помощь!
Сделал как написано. Пытается соединиться, но потом вылетает с: "exited with error code 734".
А вообще обязательно указывать логин и пароль админа, если запуск Internet-соединения происходит из под учётной записи Администратор? А куда же пишутся логин и пароль соединения?
Автор: Elroir
Дата сообщения: 08.06.2008 02:05
HelioSS

Цитата:
А вообще обязательно указывать логин и пароль админа

Насколько я понял из вопроса - батник запускается из-под учетной записи без администраторских прав, поэтому, чтобы запустить соединение с администраторскими правами, psexec-у требуются логин и пароль администратора.


Цитата:
А куда же пишутся логин и пароль соединения?

Это я стормозил

Код:
psexec -u ЛОГИН_АДМИНА -p ПАРОЛЬ_АДМИНА rasdial "НАЗВАНИЕ ИНТЕРНЕТ СОЕДИНЕНИЯ" username password
Автор: JohnRD
Дата сообщения: 08.06.2008 08:27
скажите
нужно ли создавать условие, если в папке нет искомых файлов чтобы послать goto :EOF
или он сам на этом прервется?? как правильнее??

Код: for %%p in (E:\install\GetMail\22\*.xml) do (
for /f "tokens=2 delims=_" %%i in ("%%p") do
Автор: 01MDM
Дата сообщения: 08.06.2008 09:05
JohnRD

Цитата:
нужно ли создавать условие, если в папке нет искомых файлов чтобы послать goto :EOF
или он сам на этом прервется?? как правильнее??


Если нет *.xml, то и цикл не начнется.


Цитата:

for %%p in (E:\install\GetMail\22\(*.xml,*.rar)) do ..

это я так прилизываю, запустил, работает, жду ..

Вообще то не должно работать.


Автор: Elroir
Дата сообщения: 08.06.2008 09:54
JohnRD

Цитата:
что нибуть такого нет??
for %%p in (E:\install\GetMail\22\(*.xml,*.rar)) do ..

Нет, так работать не будет.
Можешь сделать по-другому - перед for-ом переходишь в директорию E:\install\GetMail\22, а затем запускаешь for без указания директории:

Код:
pushd "E:\install\GetMail\22\"
for %%p in (*.xml,*.rar) do ..
Автор: JohnRD
Дата сообщения: 08.06.2008 10:16
01MDM

я имел в виду прилизываю, чтоб красивше было
работает щас именено так:
for %%p in (E:\install\GetMail\22\*.xml,E:\install\GetMail\22\*.rar) do ..

сижу разбираю код.. вы писали что в метку :inn передать переменную можно только с помощью параметров? я так понимаю do call:inn %%i %%p это и есть параметры %1 %2
и синтаксис такой подразумевает что именно метке :inn эти праметры предназначены?
в другой for они уже не сгодяться?
я к чему спрашиваю еслиб не было такого временного выхода из ftp в cmd, echo ! del %2>>"%d%_%1.ftp" как бы мы передали эту переменную %p% для удаления переданных файлов?

рабочий код именно такой:

Код: @echo off

set t=%time: =0%
set s=%t:,=%
set s1=%s::=%
set s2=%s1::=%
set d=scr%s2%

set d1=%date:~-4%%date:~3,2%%date:~0,2%
set l=E:\install\GetMail\log\%d1%_%s1%.log

for %%p in (E:\install\GetMail\22\*.xml,E:\install\GetMail\22\*.rar) do (
for /f "tokens=2 delims=_" %%i in ("%%p") do call:inn %%i %%p
)
for %%i in (*.ftp) do (
echo bye>>"%%i"
ftp -n -s:%%i 192.168.60.30>>%l%
del "%%i"
)

E:\install\GetMail\soon.exe 100 E:\install\GetMail\91.cmd

goto:eof

:inn
for /f "tokens=1,2 delims=; " %%b in (E:\install\GetMail\1.csv) do if %%b==%1 set login=%%c
set passw=%login%

if not exist "%d%_%1.ftp" (
echo user>"%d%_%1.ftp"
echo %login%>>"%d%_%1.ftp"
echo %passw%>>"%d%_%1.ftp"
)
echo put %2>>"%d%_%1.ftp"
echo ! del %2>>"%d%_%1.ftp"
Автор: 01MDM
Дата сообщения: 08.06.2008 12:43
JohnRD



Цитата:
вы писали что в метку :inn передать переменную можно только с помощью параметров? я так понимаю do call:inn %%i %%p это и есть параметры %1 %2
и синтаксис такой подразумевает что именно метке :inn эти параметры предназначены?
в другой for они уже не сгодяться?


Если другой for находится в пределах метки. Можно еще объявить переменную явно, но если она объявляется в цикле, то при каждом проходе будет перезаписываться.


Код:
@echo off
setlocal
for %%i in (0 1 2 3) do set var=%%i && call:label
echo %var% last
goto:eof

:label
echo %var% in label
Автор: nNau
Дата сообщения: 09.06.2008 07:45
Diman_tlt


Цитата:
а то делаю так:
print /d:\\USER\hp LaserJet 1300 PCL 6 D:\%date%.txt
пишет: "не удалось инициализировать устройство"


Во-первых, имя принтера нужно заключить в ковычки, потому как в имени содержатся пробелы:

print /d:"\\USER\hp LaserJet 1300 PCL 6" D:\%date%.txt

Во-вторых, возможно стоит заменить имя машины на IP-адрес

Ну и в-третьих, убедится что имя принтера действительно такое и доступ к нему открыт, проще всего в этом убедится следующим образом: в коммандной строке набрать
start \\User (имя лучше заменить на IP)
затем, в открывшемся окне, пкм на ярлыке принтера, и в выпадающем меню выбрать "Создать ярлык", поместить ярлык, например, на рабочий стол, и в его свойствах посмотреть поле "объкт", там и будет имя принтера, по которому к нему следует обращаться.
Автор: Diman_tlt
Дата сообщения: 09.06.2008 10:55
nNau
Спасибо за подробный инструктаж, все получилось!
Автор: 4aplin
Дата сообщения: 10.06.2008 09:19
помогите, пожалуйста, добить код...

Цитата:
@echo off
setlocal
for /f "tokens=5 delims=:" %%i in ('FINDSTR /I "Status:" log.txt') do set aaa=%%i
if NOT %aaa%==OPTIMAL (
sendmail -t < warning.mail
ECHO WARNING %date% %TIME:~0,8%>>\\Computer\report$\alertlog.txt
) else (
ECHO OK %date% %TIME:~0,8%>>\\Computer\report$\alertlog.txt
)
pause


Если процессы в системный лог пишут ошибку, тогда вызов blat(sendmail), весится на команду eventtriggers и отправляет сообщение о том, какой сервис полетел
Автор: 01MDM
Дата сообщения: 10.06.2008 09:42
4aplin
Сначала надо создать событие (eventcreate), по итогам выполнения какой-либо команды.
Потом на это событие повесить триггер (eventtriggers /create)
Автор: Joolz
Дата сообщения: 10.06.2008 12:19
4aplin
Тебе нужно следить за каким-то конкретным (одним или несколькими) сервисом или вообще за всем?
IMHO проще смотреть за их статусами через sc query
Что-то типа этого:

Код: @echo off
setlocal
for /f "tokens=4" %%t in ('SC QUERY messenger ^| FINDSTR "STATE"') do SET status=%%t
if NOT %status%==RUNNING (
ECHO MIME-Version: 1.0> %TEMP%\temp.mail
ECHO Content-type: text/plain; charset=windows-1251>> %TEMP%\temp.mail
ECHO From: SERV1>> %TEMP%\temp.mail
ECHO To: admin@domain.ru>> %TEMP%\temp.mail
ECHO Subject: Warning!!! Service down>> %TEMP%\temp.mail
ECHO.>> %TEMP%\temp.mail
ECHO. >> %TEMP%\temp.mail
sendmail -t < %TEMP%\temp.mail
DEL %TEMP%\temp.mail
)
Автор: 4aplin
Дата сообщения: 10.06.2008 13:11
Joolz
за всеми...
Автор: Joolz
Дата сообщения: 10.06.2008 13:38
4aplin
Суть в том, что у меня конструкция

Код: EVENTTRIGGERS /Create /TR "Send mail on ERROR" /T ERROR /TK "C:\BATCH\sendml.cmd"
EVENTCREATE /t ERROR /id 6000 /d "TEST EVENT"
Автор: 4aplin
Дата сообщения: 10.06.2008 13:51
Joolz
И что ты посоветуешь сделать?
Автор: Joolz
Дата сообщения: 10.06.2008 14:11
Проверь, будет ли у тебя работать.
Кста, ID нельзя больше 1000, у меня там ошибка.
Автор: 01MDM
Дата сообщения: 10.06.2008 14:27
Joolz

Не знаю починили в SP3 или нет, но событие "ERROR" и "WARNING" не создавалось, точнее создавалось, но "INFORMATION". Поэтому триггер, настроенный на эти категории не срабатывал.

Это старый баг, который обещали починить.
Автор: Joolz
Дата сообщения: 10.06.2008 15:19
4aplin
А зачем такой глобальный мониторинг системы? Если падают все сервисы - машина не дееспособна, если вываливаются какие-то конкретно - скорее всего ошибка в них. Если вываливаются постоянна лезь в системный лог и смотри код ошибки, и делай соответствующую команду

Код: EVENTTRIGGERS /Create /TR "Send mail on ERROR" /EID код ошибки /TK "C:\BATCH\sendml.cmd"
Автор: HelioSS
Дата сообщения: 10.06.2008 18:14
Elroir
А как запустить Internet-соединение как сервис?
Автор: Elroir
Дата сообщения: 10.06.2008 18:24
HelioSS

Цитата:
А как запустить Internet-соединение как сервис?

Я не думаю, что это возможно.
Автор: iamantbk
Дата сообщения: 11.06.2008 05:54
Как создать SFX архив, который распаковывается втихую через ключи?
Пока получается создать SFX, у которого надо нажать на "Извлечь".
(Создать sfx с обновлением Dr.Web)
Автор: Joolz
Дата сообщения: 11.06.2008 08:18
iamantbk
В WinRAR есть возможность запуска исполняемого файла до или после распаковки архива, соответственно, можно запихать в архив cmd-файл и выполнять его сразу после распаковки. Плюс можно создать архив распаковывающийся без какого-либо вывода на экран. Все настройки на закладке "Дополниельно" кнопка [Параметры SFX].
На сколько я знаю в 7zip возможностей больше, но я с ним плохо знаком.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.