Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
echo.for /f "tokens=1,2,3 delims=:" %%%a in ("%time:~0,8%") do (set hh=%%%a) ^& (set mm=%%%b) ^& (set ss=%%%c) >txt.bat  

 
Получаеться...

Код:
for /f "tokens=1,2,3 delims=:" %time:~0,8%a) & (set mm=%%c)  
 

 

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 14:29 09-06-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Scream_Wolf

Код:
 
Echo for /f "tokens=1,2,3 delims=:" %%a in ("%%time:~0,8%%") do (set hh=%%%%a) ^& (set mm=%%%%b) ^& (set ss=%%%%c)>result.txt
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:13 09-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
 
Исправлена не точность...

Цитата:
Echo for /f "tokens=1,2,3 delims=:" %%%%a in ("%%time:~0,8%%") do (set hh=%%%%a) ^& (set mm=%%%%b) ^& (set ss=%%%%c)>result.txt  

 
Работает спасибо!!!
 
И еще вопрос... 1.bat создает и запускает 2.bat. Вопрос: как отследить процесс (он ведь CMD.EXE а таких может быть несколько) дабы убить его потом (именно 2.bat) так же батником (taskkill /f /im "cmd.exe" - в этом случае он грохнет все имеющиесь CMD.exe в том числе и себя) При попытке просто удалить 2.bat cmd.exe прекращает выполняться и спрашивает о завершение пакетного файла т е нада нажимать Y/N...
 
Добавлено:
Помогите с батником...
Код
 
можно ли как-нибудь заставить батник, что-бы он спросил сколько будет серверов для проверки и после этого, в зависимости от указанного количества, спросил имя каждого сервера...
 
проводя проверку если например юзер отсутствует на месте, и если один из серверов недоступен, то на экране юзера будет полно выведеных сообщений (hs_message.exe)  
как-бы сделать так, что бы например если server2 не доступен, то больше одного сообщения не выводилось, но при этом проверка ...и server2... продолжалась
 
еще бы был бы очень презнателен если в поможете с выводом лога батником...
 
содержание лога примерно следующее

Код:
 
01.01.2001 10:00:00 Запуск проверки
01.01.2001 11:00:00 Сервер server2 - недоступен
01.01.2001 12:00:00 Сервер server4 - недоступен
01.01.2001 13:00:00 Сервер server2 - доступен
01.01.2001 14:00:00 Сервер server4 - доступен
01.01.2001 15:00:00 Остановка проверки
 

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 15:52 09-06-2009 | Исправлено: ScreamWolf, 17:27 09-06-2009
William Gates

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Такая проблема. Нужно узнать внешний ip не используя браузер. Наковырял на форуме такой код  
@echo off
setlocal
 
cmd /c wget -c http://www.myip.ru/ 1>nul 2>&1
 
for /f "tokens=4" %%i in ('findstr .title.* index.html') do set "ip=%%i"
echo %ip%
del index.html  
 
но что-то не срабатывает. Wget уствновлен. Что может быть? Помогите, плз.

Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 19:20 09-06-2009
HaK1R



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ScreamWolf

Цитата:
И еще вопрос... 1.bat создает и запускает 2.bat. Вопрос: как отследить процесс (он ведь CMD.EXE а таких может быть несколько) дабы убить его потом (именно 2.bat) так же батником (taskkill /f /im "cmd.exe" - в этом случае он грохнет все имеющиесь CMD.exe в том числе и себя) При попытке просто удалить 2.bat cmd.exe прекращает выполняться и спрашивает о завершение пакетного файла т е нада нажимать Y/N...

а попробуй убивать не по имени процесса а по PID
 
Добавлено:
ScreamWolf

Цитата:
можно ли как-нибудь заставить батник, что-бы он спросил сколько будет серверов для проверки и после этого, в зависимости от указанного количества, спросил имя каждого сервера...  


Код:
@echo off
set /p "NumberOfServers=Сколько серверов?"
for /l %%a in (1,1,%NumberOfServers%) do (
  set /p "ServerName_%%a=Введите имя %%a-го сервера"
)
set ServerName
pause 1>nul

 
Добавлено:
William Gates
адрес не менять!

Код:
@echo off
setlocal
cmd /c wget -c http://www.cmyip.com/ 1>nul 2>&1
for /f "tokens=4" %%i in ('findstr .title.* index.html') do set "ip=%%i"
echo %ip%
del index.html
pause 1>nul

 
Добавлено:
ScreamWolf

Цитата:
Помогите с батником...
Код  

А зачем вот это дублировать?

Код:
set server=server1  
set log=%temp%\%server%.scan  
ping -n 1 %server% >%log%  
find /i "ttl" "%log%"  
if %errorlevel%==1 goto offline
:%server%
set server=server2  
set log=%temp%\%server%.scan  
ping -n 1 %server% >%log%  
find /i "ttl" "%log%"  
if %errorlevel%==1 goto offline
:%server%
set server=server3
set log=%temp%\%server%.scan  
ping -n 1 %server% >%log%  
find /i "ttl" "%log%"  
if %errorlevel%==1 goto offline  
:%server%
set server=server4
set log=%temp%\%server%.scan  
ping -n 1 %server% >%log%  
find /i "ttl" "%log%"  
if %errorlevel%==1 goto offline  
:%server%
set server=server5
set log=%temp%\%server%.scan  
ping -n 1 %server% >%log%  
find /i "ttl" "%log%"  
if %errorlevel%==1 goto offline
?
Я сейчас немного переделаю, не против? :)
 
Добавлено:
ScreamWolf
вот вариант, с отчетом, исправил ошибки, и недочеты.
красным файл отчета

Цитата:
как-бы сделать так, что бы например если server2 не доступен, то больше одного сообщения не выводилось, но при этом проверка ...и server2... продолжалась  

А до какого момента это сообщение не должно выводится иными словами, когда оно будет снова появляться? (в примере при следующем запуске проги)
Посмотри то что синем, привильно ли написано, утилита нет, сам не могу проверить, там во втором в конце Е вместо I появилось, не знаю, нормально ли это.
И еще в конце было удоление 1.bat - убрал это

Код:
@echo off
set "report=report.txt"
set h1=18
set h2=9
set m1=0
set m2=0
set s1=0
set s2=0
set timesleep=30
set /a TimeInSec1=(%h1%*60+%m1%)*60+%s1%
set /a TimeInSec2=(%h2%*60+%m2%)*60+%s2%
set /a timesleep+=1
set /a MASS=0
set /p "NumberOfServers=Сколько серверов?"
for /l %%a in (1,1,%NumberOfServers%) do (
  set /p "ServerName_%%a=Введите имя %%a-го сервера"
)
(echo %date% %time:~0,8% Запуск проверки) 1>>%report%
start hs_message.exe "Server Controll ONLINE - ЗАПУЩЕН c %h2%:%m2%:%s2% до %h1%:%m1%:%s1% таймаут:%timesleep%сек" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" I OK
:scan
for /f "tokens=1,2,3 delims=:" %%a in ("%time:~0,8%") do (set hh=%%a) & (set mm=%%b) & (set ss=%%c)
set /a TimeInSec=(%hh%*60+%mm%)*60+%ss%
if %TimeInSec% GEQ %TimeInSec1% (goto :stop)
if %TimeInSec% Lss %TimeInSec2% (goto :stop)
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
  ping -n 1 "%%i" | find /i "TTL=" 1>nul 2>&1
  if %errorlevel% 1 (
    (echo %date% %time:~0,8% Сервер %%i - недоступен) 1>>%report%
    call :offline "%%i"
  ) else (
    (echo %date% %time:~0,8% Сервер %%i - доступен) 1>>%report%
  )
)
ping -n %timesleep% localhost 1>nul 2>&1
goto :scan
:offline
if MASS==0 (start hs_message.exe "Сервер %~1 не доступен (не виден в сети)! Проверьте сетевые подключения сервера!" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" E OK)
set /a MASS=1
goto :EOF
:stop
(echo %date% %time:~0,8% Остановка проверки) 1>>%report%
start hs_message.exe "Server Controll ONLINE - ОСТАНОВЛЕН по истечению времени!" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" I OK
goto :EOF

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 20:55 09-06-2009 | Исправлено: HaK1R, 22:42 09-06-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
William Gates
HaK1R
Уже было:

Код:
 
@Echo Off
 
Set "TmpFile=%TEMP%\~tmp"
 
Del /F /Q "%TmpFile%">Nul 2>&1
wget -O"%TmpFile%" "http://whatismyip.com/automation/n09230945.asp" 2>Nul  
 
Set /P _IP=<"%TmpFile%"
 
Echo %_IP%
 
Del /F /Q "%TmpFile%"
 

 
ScreamWolf

Цитата:
При попытке просто удалить 2.bat cmd.exe прекращает выполняться и спрашивает о завершение пакетного файла т е нада нажимать Y/N...

Попробуйте удалять так:

Код:
 
Echo Y | Del /F /Q 2.bat
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:39 10-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
Выделонное красным не верно... на этой команде обрыв (не наю посиму ((((( )
Тута код
 

Цитата:
а попробуй убивать не по имени процесса а по PID  

а как этим же (1.bat - который создает и запускает 2.bat) батником узнать PID зпущеного батника 2.bat (cmd.exe) если сам 1.bat так же висит в прцессах (!возможно не толбько он!)...
 

Цитата:
А зачем вот это дублировать?

Я просто не знал как
Цитата:
заставить батник, что-бы он спросил сколько будет серверов для проверки и после этого, в зависимости от указанного количества, спросил имя каждого сервера...  
так что на этом спасибо большое, теперь будем знать =)
 
Maza_Faka - работает! СПАСИБО...

Цитата:
Echo Y | Del /F /Q 2.bat  

 
 
Добавлено:
Простите за глупые вопросы, но
Цитата:
(echo %date% %time:~0,8% Сервер %%i - доступен) 1>>%report%

почему в скобках (если скобки не пренадлежат FOR'у)
 
и вопрос на засыпку: в команде GOTO :EOF - 9 (8-без пробела) знаков, когда команда EXIT - в 2 раза короче... зачем тогда использовать переход в конец файла, если можно просто выйти...?

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 09:32 10-06-2009 | Исправлено: ScreamWolf, 10:01 10-06-2009
William Gates

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
HaK1R
 
Спасибо!Работает отлично. А можно сохранить полученый ip в файле, в определённом каталоге. Напр., С:\IP\ip.txt?  

Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 12:29 10-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
William Gates
 

Код:
@Echo Off  
Set "TmpFile=%TEMP%\~tmp"  
Set DR=%SYSTEMDRIVE%\IP
if not exist "%DR%" md "%DR%"
Del /F /Q "%TmpFile%">Nul 2>&1  
wget -O"%TmpFile%" "http://whatismyip.com/automation/n09230945.asp" 2>Nul  
Set /P _IP=<"%TmpFile%"  
Echo IP-adress:%_IP% >%DR%\ip.txt
Del /F /Q "%TmpFile%"
start notepad %DR%\ip.txt

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 13:06 10-06-2009 | Исправлено: ScreamWolf, 13:09 10-06-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
William Gates

Цитата:
А можно сохранить полученый ip в файле

WGET имеет такой ключ:

Код:
 
wget -O"С:\IP\ip.txt" "http://whatismyip.com/automation/n09230945.asp"
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:21 10-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka

Цитата:
wget -O"С:\IP\ip.txt" "http://whatismyip.com/automation/n09230945.asp"

а каталог он тоже создаст?
 
 
Добавлено:
HaK1R
I - это окно ИНФОРМАЦИИ
E - окно ошибки
(W - предупреждение Q - вопрос)

Цитата:
Посмотри то что синем, привильно ли написано, утилита нет, сам не могу проверить, там во втором в конце Е вместо I появилось, не знаю, нормально ли это.

 
удаление 1.bat - это т.е. сам себя удалял...
 
 
Добавлено:
HaK1R

Цитата:
Я сейчас немного переделаю, не против?

я впринцыпе и мечтал об этом... ОГРОМНОЕ СПАСИБО

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 14:31 10-06-2009
HaK1R



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ScreamWolf

Цитата:
Простите за глупые вопросы, но
Цитата:
(echo %date% %time:~0,8% Сервер %%i - доступен) 1>>%report%
 
почему в скобках (если скобки не пренадлежат FOR'у)  

 
это чтобы в файл не попадали лишние пробелы, в принцыпе можно без скобочек и единички
 

Цитата:
и вопрос на засыпку: в команде GOTO :EOF - 9 (8-без пробела) знаков, когда команда EXIT - в 2 раза короче... зачем тогда использовать переход в конец файла, если можно просто выйти...?

 
когда переходит в конец файла, заканчивается выполнение операции call, и он продолжает выполнение дальше с места вызова функции, а когда exit, он завершает программу, что нам не нужно
 

Цитата:
удаление 1.bat - это т.е. сам себя удалял...  

тогда лучше не так

Код:
del /f /q 1.bat

а так(не будет привязан к имени)

Код:
del /f /q "%~0"

Цитата:
 
 
I - это окно ИНФОРМАЦИИ
E - окно ошибки
(W - предупреждение Q - вопрос)  

 
А скинь мне ссылку на hs_message.exe а то я найти не могу
 
Добавлено:
ScreamWolf

Цитата:
Выделонное красным не верно... на этой команде обрыв (не наю посиму ((((( )  

 
а вот такой в батнике отдельно работает?

Код:
@echo off
for /f "tokens=1* delims==" %%h in ('set PR') do echo %%i


Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 18:22 10-06-2009 | Исправлено: HaK1R, 18:28 10-06-2009
spider91

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите плиз как у всех файлов в папке убрать приставку New_ в начале

Всего записей: 605 | Зарегистр. 02-02-2009 | Отправлено: 22:39 10-06-2009
HaK1R



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
spider91

Код:
pushd "C:\ada96faa1b7f6aeaef1414a08756\"
for /f %%i in ('dir /b /a-d') do (call :renfile "%%i")
popd
gotto :EOF
 
:renfile
set "name=%~1"
ren "%name%" "%name:~4%"

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 23:46 10-06-2009
spider91

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
 
 
спасибо

Всего записей: 605 | Зарегистр. 02-02-2009 | Отправлено: 00:17 11-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R

Цитата:
когда переходит в конец файла, заканчивается выполнение операции call, и он продолжает выполнение дальше с места вызова функции, а когда exit, он завершает программу

За инфу - СПАСИБО
 
А вот это можно поконкретнее... что такое "%~0" ? и что значит привязан к имени в этом случае?

Цитата:
del /f /q 1.bat  
 
 
а так(не будет привязан к имени)  
 
Код:del /f /q "%~0"

 

Цитата:
А скинь мне ссылку на hs_message.exe а то я найти не могу

я брал в шапке... но сайтик не всегда доступен... если очень нада могу выложить архивчик...
Предупреждаю!

Цитата:
@echo off  
for /f "tokens=1* delims==" %%h in ('set PR') do echo %%i

работает отдельно...
 
Добавлено:
HaK1R

Цитата:
pushd "C:\ada96faa1b7f6aeaef1414a08756\"  
for /f %%i in ('dir /b /a-d') do (call :renfile "%%i")  
popd  
gotto :EOF  
 
:renfile  
set "name=%~1"  
ren "%name%" "%name:~4%"

 
а у меня аналогичный вопрос... тока мне надо в конце каждого файла (файл является ярлыком - *.lnk) удалить слова с пробелом перед ним "_Управление" (ПОДЧЕРКИВАНИЕ - означает пробел)

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 11:29 11-06-2009 | Исправлено: ScreamWolf, 16:33 11-06-2009
HaK1R



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ScreamWolf

Цитата:
А вот это можно поконкретнее... что такое "%~0" ? и что значит привязан к имени в этом случае?  

%~0 это ссылка на данный файл
не привязан в смысле
del 1.bat будет работать если сам файл назван как 1.bat
а если del "%~0" то он может быть назван как угодно.

Цитата:
работает отдельно...  

я тогда не знаю почему сбивается на той строчке
 
spider91
ScreamWolf
я там описался  

Код:
pushd "C:\ada96faa1b7f6aeaef1414a08756\"
for /f %%i in ('dir /b /a-d') do (call :renfile "%%i")
popd
goto :EOF
 
:renfile
set "name=%~1"
ren "%name%" "%name:~4%"  

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 20:05 11-06-2009
JsYPcvb1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
 День добрый!Подскажите как с помощью bat'а отправить файл на указанную по4ту 4ерез outlook.Спасибо.

 
бат зоздает файл архива на рабочем столе, так вот его и надо отправить по автомату. что нужно добавить в батник??

Всего записей: 10 | Зарегистр. 29-05-2009 | Отправлено: 11:26 15-06-2009
rainring

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен маленький батник, буду очень рад помощи!!!
нужно чтоб делалось следущее:
найти на всех дисках все папки (кроме системных) с именами Temp, TMP, не учитывая регистр имени папок, и удалить эти папки без вопросов. На дисках есть WinXP & Win 7

Всего записей: 2 | Зарегистр. 16-06-2009 | Отправлено: 10:40 16-06-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R

Цитата:
%~0 это ссылка на данный файл  
не привязан в смысле  
del 1.bat будет работать если сам файл назван как 1.bat  
а если del "%~0" то он может быть назван как угодно.

спасибо за инфу...!!!
 

Цитата:
А скинь мне ссылку на hs_message.exe а то я найти не могу

с шапки не брал? ->
Цитата:
я брал в шапке... но сайтик не всегда доступен... если очень нада могу выложить архивчик...


Цитата:
я там описался
->
Цитата:
тока мне надо в конце каждого файла (файл является ярлыком - *.lnk) удалить слова с пробелом перед ним "_Управление" (ПОДЧЕРКИВАНИЕ - означает пробел)

 
подскажи плиз... и можно ли это сообразить так что бы в начале батника было set /p delstr=.... и кое-нить определение "с конца"/"с начала" искать и править имя... а то по работе частенько встречаються разнообразные группы файлов которые необходимо переименовывать, я конечно тоталом пробовал (вроде ниче), но хотелось бы просто разобраться как это можно при помощу батника делать...
 
Добавлено:
HaK1R

Цитата:
@echo off  
set "report=report.txt"  
set h1=18  
set h2=9  
set m1=0  
set m2=0  
set s1=0  
set s2=0  
set timesleep=30  
set /a TimeInSec1=(%h1%*60+%m1%)*60+%s1%  
set /a TimeInSec2=(%h2%*60+%m2%)*60+%s2%  
set /a timesleep+=1  
set /a MASS=0  
set /p "NumberOfServers=Сколько серверов?"  
for /l %%a in (1,1,%NumberOfServers%) do (  
  set /p "ServerName_%%a=Введите имя %%a-го сервера"  
)  
(echo %date% %time:~0,8% Запуск проверки) 1>>%report%  
start hs_message.exe "Server Controll ONLINE - ЗАПУЩЕН c %h2%:%m2%:%s2% до %h1%:%m1%:%s1% таймаут:%timesleep%сек" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" I OK  
:scan  
for /f "tokens=1,2,3 delims=:" %%a in ("%time:~0,8%") do (set hh=%%a) & (set mm=%%b) & (set ss=%%c)  
set /a TimeInSec=(%hh%*60+%mm%)*60+%ss%  
if %TimeInSec% GEQ %TimeInSec1% (goto :stop)  
if %TimeInSec% Lss %TimeInSec2% (goto :stop)  
for /f "tokens=1* delims==" %%h in ('set ServerName') do (  
  ping -n 1 "%%i" | find /i "TTL=" 1>nul 2>&1  
  if %errorlevel% 1 (  
    (echo %date% %time:~0,8% Сервер %%i - недоступен) 1>>%report%  
    call ffline "%%i"  
  ) else (  
    (echo %date% %time:~0,8% Сервер %%i - доступен) 1>>%report%  
  )  
)  
ping -n %timesleep% localhost 1>nul 2>&1  
goto :scan  
ffline  
if MASS==0 (start hs_message.exe "Сервер %~1 не доступен (не виден в сети)! Проверьте сетевые подключения сервера!" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" E OK)  
set /a MASS=1  
goto :EOF  
:stop  
(echo %date% %time:~0,8% Остановка проверки) 1>>%report%  
start hs_message.exe "Server Controll ONLINE - ОСТАНОВЛЕН по истечению времени!" "!!!ВНИМАНИЕ!!!   ***   %date% %time:~0,8%" I OK  
goto :EOF
И еще... вверхнем коде raport.txt (лог) пишится в кодировке 866, можно ли как-нить его писать в 1251?
и все же никак... обрыв на for /f "tokens=1* delims==" %%h in ('set ServerName') ....
Пробовал отдельно такой батник:

Код:
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
  ping -n 1 "%%i" | find /i "TTL=" 1>nul 2>&1
  if %errorlevel% 1 (
    echo %date% %time:~0,8% Сервер %%i - недоступен
  ) else (
    echo %date% %time:~0,8% Сервер %%i - доступен
  )
)
pause
не работает (((
 

Цитата:
а попробуй убивать не по имени процесса а по PID
->
Цитата:
а как этим же (1.bat - который создает и запускает 2.bat) батником узнать PID зпущеного батника 2.bat (cmd.exe) если сам 1.bat так же висит в прцессах (!возможно не толбько он!)...

 
Добавлено:
HaK1R
Нашел трабл... красным цветом

Цитата:
set ServerName=192.168.0.1  
for /f "tokens=1* delims==" %%h in ('set ServerName') do (  
  ping -n 1 "%%i" | find /i "TTL=" 1>nul 2>&1  
  if %errorlevel%==1 (  
    echo %date% %time:~0,8% Сервер %%i - недоступен  
  ) else (  
    echo %date% %time:~0,8% Сервер %%i - доступен  
  )  
)

но почему-то в любом случае пишет что доступен ((

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 11:55 16-06-2009 | Исправлено: ScreamWolf, 13:12 16-06-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru