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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111

Цитата:
Впрочем, если известна программа, которая выполнит эту задачу под виндой  

Тогда можно просто VBS-скриптом

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 11:07 05-06-2009
Mikhaluch

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чем можно в батнике создать другой батник, не копировать, а именно создать текстовый файл?

Всего записей: 54 | Зарегистр. 23-12-2008 | Отправлено: 15:17 05-06-2009
Elroir



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

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

Команда echo с перенаправлением в файл:

Код:
 
echo @echo off>>second.bat
echo date>>second.bat
 



----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:54 05-06-2009 | Исправлено: Elroir, 15:55 05-06-2009
Shustrikf

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем всем привет !  
Есть такая задача нужно отключить порт либо на локальном либо на сетевом ... Вобщем вирус у нас в сети обратиться некому пробовал в инете прочитать нечего там не нашел ... Задача у меня такая чтобы  uDP порт закрыть пробовал сам написать но чета не работаит =( вобщем батник следующего типа  
 78750 diseble dfghtr.exe типа того вобщем кто сможет помогите мне пожалуйста очень срочно нуна заранее все благодарю что вообще читаете этот текст!

Всего записей: 11 | Зарегистр. 07-10-2008 | Отправлено: 16:22 05-06-2009
neon



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shustrikf
 
может быть проще через брандмаУэр сделать это?

----------
«То, что я понял, — прекрасно, из этого я заключаю, что остальное, что я не понял, — тоже прекрасно». Сократ.

Всего записей: 1876 | Зарегистр. 20-10-2003 | Отправлено: 17:20 05-06-2009
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush, класная вещь этот ваш скрипт, благодарствую - а то ещё бы с SET заморачивался, не соображая, в сущности, в ДОСе. Только не совсем понятно у вас с годами и месяцами - ведь они имеют всё-таки разную длину в днях. Видимо, подразумевается год - 365 дней, а месяц - 30?

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 02:40 06-06-2009
Super Baby

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь скачать из шапки:

Цитата:
Справка по командам в виде Html
_http://www.sendspace.com/file/w3ocs7

Ничего не получается. Не мог ли бы кто-нибудь перебросить на другой файл хостинг этот файл, пжл (rapidshare, ifolder, depositfiles)?

Всего записей: 88 | Зарегистр. 14-02-2008 | Отправлено: 03:46 06-06-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111

Цитата:
Видимо, подразумевается год - 365 дней, а месяц - 30?

Подразумевается год=1 году, а месяц одному месяцу.
Ничто ведь не мешает поэкспериментировать на достаточно больших промежутках и сравнить правильность ответов.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 06:45 06-06-2009
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush, я вам ПМ послал - не заметили?

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 18:18 06-06-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111

Цитата:
Rush, я вам ПМ послал - не заметили?  

Да, вроде, давно уже ответил. Продублировал.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 04:02 07-06-2009
artem1982



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не напишет,как сделать,чтобы при запуске игры,запускалось YASU и автоматом нажимало Cloak?

Всего записей: 274 | Зарегистр. 03-04-2005 | Отправлено: 04:49 07-06-2009
Engaged Clown



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
artem1982
Посмотри в сторону AutoIt или s0m

Всего записей: 8782 | Зарегистр. 08-06-2006 | Отправлено: 13:53 07-06-2009
Scream_Wolf



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ХЕЛП!!! Как осуществить следующее:

Код:
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=:" %%a in ("%time:~0,8%") do (set hh=%%a) & (set mm=%%b) & (set ss=%%c)

Всего записей: 1 | Зарегистр. 09-06-2009 | Отправлено: 14:15 09-06-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
   

Страницы: 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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru