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

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

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
Serge2005

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
jak_forest
Спасибо! Буду изучать))
KapralBel
Спасибо, приму на заметку...

Всего записей: 554 | Зарегистр. 11-02-2006 | Отправлено: 13:18 15-02-2006
KapralBel



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

Цитата:
If %isCopy% == 1 Echo. %Str% >>Anek_Result.txt  

Если посли Эхо сразу стоит точка -то должно ставить пробелы
Удаляю точку - все без пробелов
 
Добавлено:
olegupb
Кавычки замени на одинарные

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:41 15-02-2006
olegupb



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

Цитата:
Если посли Эхо сразу стоит точка -то должно ставить пробелы

Если так, то в выходном файле каждая строка начинается с пробела

Цитата:
Удаляю точку - все без пробелов  

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

Цитата:
Кавычки замени на одинарные

С кавычками решено

Всего записей: 734 | Зарегистр. 09-02-2005 | Отправлено: 13:54 15-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
olegupb
Каждая строка начинается с пробела - для анекдотов?
Это очень страшно?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:59 15-02-2006
olegupb



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

Цитата:
Каждая строка начинается с пробела - для анекдотов?  
Это очень страшно?  

"Да нет это совсем не страшно, я просто привел пример как у меня отрабатывает
Цитата:
Цитата:If %isCopy% == 1 Echo. %Str% >>Anek_Result.txt  
 
Если посли Эхо сразу стоит точка -то должно ставить пробелы  
Удаляю точку - все без пробелов  
"
 
В выходном файле отсутствуют пустые строки между анекдотами, что приводит к их слипанию в один большой
Вот это немного так сказать неудобно.

Всего записей: 734 | Зарегистр. 09-02-2005 | Отправлено: 14:09 15-02-2006
z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть переменная, введенная пользователем с экрана.
Например "12345678901234567890" (всего 20 цифр).
Нужно сложить все цифры кроме №13. и прибавить к получившейся сумме заднное число например "14". Затем от полученного результата взять первую цифру справа и поставить её вместо цифры №13.
В данном случае сумма у нас 87 прибавляем 14 = 101. Берём правую цифру от "101" т.е. "1" заменяем ею № 13. Результат получается такой "12345678901214567890".
И в конце результат выводится на экран.
 
Подскажите как сделать это на батнике?
 
И ещё вопрос как сравнить два числа в батнике. К примеру если 10+переменная*2 > 0 то делай то-то, если нет то делай ещё что-то.

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 18:28 15-02-2006 | Исправлено: z83, 18:40 15-02-2006
KapralBel



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

Код:
 
@Echo Off
Set /P ch="Число>"
Set chDop=14
Set ch01=%Ch:~0,1%
Set ch02=%Ch:~1,1%
Set ch03=%Ch:~2,1%
Set ch04=%Ch:~3,1%
Set ch05=%Ch:~4,1%
Set ch06=%Ch:~5,1%
Set ch07=%Ch:~6,1%
Set ch08=%Ch:~7,1%
Set ch09=%Ch:~8,1%
Set ch10=%Ch:~9,1%
Set ch11=%Ch:~10,1%
Set ch12=%Ch:~11,1%
Set ch13=%Ch:~12,1%
Set ch14=%Ch:~13,1%
Set ch15=%Ch:~14,1%
Set ch16=%Ch:~15,1%
Set ch17=%Ch:~16,1%
Set ch18=%Ch:~17,1%
Set ch19=%Ch:~18,1%
Set ch20=%Ch:~19,1%
 
Set /a chSumm=%ch01%+%Ch02%+%Ch03%+%Ch04%+%Ch05%+%Ch06%+%Ch07%+%Ch08%+%Ch09%+%Ch10%
Set /a chSumm=%chSumm%+%ch11%+%Ch12%+%Ch14%+%Ch15%+%Ch16%+%Ch17%+%Ch18%+%Ch19%+%Ch20%
Set /a chSumm=%chSumm%+%chDop%
Set chLast=%ChSumm:~-1%
Set chNew=%ch01%%ch02%%ch03%%ch04%%ch05%%ch06%%ch07%%ch08%%ch09%%ch10%
Set chNew=%chNew%%ch11%%ch12%%chLast%%ch14%%ch15%%ch16%%ch17%%ch18%%ch19%%ch20%
 
Echo New chislo:%chNew%
 

 
Добавлено:

Цитата:
И ещё вопрос как сравнить два числа в батнике. К примеру если 10+переменная*2 > 0 то делай то-то, если нет то делай ещё что-то.


Код:
 
Set ch=1
Set Ch1=0
Set /a ch2=10+%ch%*2
If %ch1% GTR %ch2% (
Echo Больше
) Else (
Echo Меньше )
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:45 15-02-2006
olegupb



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

Цитата:
В выходном файле отсутствуют пустые строки между анекдотами

Перед батником закинул в Word и двумякликами заменил пустые места разделителем типа "------------------------------------------" и все красиво получилось.
Выходной файл 350 страниц с анекдотами!
Спасибо, за помощь!

Всего записей: 734 | Зарегистр. 09-02-2005 | Отправлено: 19:13 15-02-2006
z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KapralBel
Спасибо, мне это очень помогло. А то делать всё через эксель, и каждый раз вручную переписывать туда сюда, по одной цифорке просто ужасно.

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 22:44 15-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
olegupb
Поправленная версия - путые строки заменяет на "---------------------", и нге вставляет пробел в начале каждой строки

Код:
 
@Echo Off
Set begin=Лучшие 13 анекдотов
Set end=Подписать друга на
ChCp 1251
Set isCopy=0
For /f "delims= skip=5" %%a  In ('Type *.ane') Do Call :_P %%a
ChCp 866
GoTo :EOF
 
:_P
Set Str=%*
Set tmpBeg=%Str:~0,19%
Set tmpEnd=%Str:~0,18%
If /i "%tmpEnd%"=="%end%" Set isCopy=0
If "%Str%"=="" Set Str=------------------------
If %isCopy% == 1 Echo %Str% >>Anek_Result.txt
If /i "%tmpBeg%"=="%begin%" Set isCopy=1
GoTo :EOF
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:35 16-02-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Win-98
У команды SET отсутствует параметр /a. Как записать в переменную результат арифметического действия?

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:58 16-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM
1. перейти на XP
2. Написать самому программу в которую передаешь строку вида "2+4*6", а она возвращает 26
3. Смотри в сторону VBS/JS/Perl и т.д.

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:22 17-02-2006
hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Можно воспользоваться сторонними утилитами, которые подсчитают результат и вернут его через errorlevel.

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 10:23 17-02-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотрел в сторону JScript. С другим программированием к сожалению не знаком.
XP отпадает из-за слабости железа. Линукс можно поставить, но никто его не оценит.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:57 18-02-2006 | Исправлено: 01MDM, 20:08 18-02-2006
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Ставим 4NT или 4Dos компании JPSoft и всё будет хорошо.

Всего записей: 771 | Зарегистр. 12-10-2002 | Отправлено: 20:04 19-02-2006
komper



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Уже два дня мучаюсь помогите
 
Задача такая.
 
Пингуем 10.25.254.254
Если пингуется, пингуем второй адрес, если не пингуется то выводим сообщение на экран и проигрываем какой нить звук и отправляем сообщение по net send на другой комп в сети
Если пингуется второй адрес то ждем минуту и возвращаемся на начало если не пингуется то тоже отправляем сообщение и проигрываем звук
 
Как это реализовать?

Всего записей: 56 | Зарегистр. 18-04-2004 | Отправлено: 19:54 20-02-2006
KapralBel



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

Цитата:
 если не пингуется то тоже отправляем сообщение и проигрываем звук  
- какой адрес не пингуется? Первый или второй?

Код:
 
@Echo Off
:Begin
Ping 192.168.0.1
GoTo :_Ping1_%ErrorLevel%
GoTo :EOF
 
:_Ping1_0
Echo 1-st IP ping - Yes
Ping 192.168.0.1
GoTo :_Ping2_%ErrorLevel%
GoTo :EOF
 
:_Ping1_1
Echo 1-st IP ping - No
GoTo :EOF
 
:_Ping2_0
Echo 2-st IP ping - Yes
Set t0=%Time%
Set t1=%t0:~3,2%
:Loop1
Set t2=%Time:~3,2%
If %t1% == %t2% GoTo :Loop1
GoTo :Begin  
GoTo :EOF
 
:_Ping2_1
Echo 2-st IP ping - No
Echo Проиграть звук
Net Send Comp111 Второй адрес не пингуется  
GoTo :EOF
 


Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:35 21-02-2006 | Исправлено: KapralBel, 10:58 21-02-2006
01MDM



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

Цитата:
 Ставим 4NT или 4Dos компании JPSoft и всё будет хорошо.

 
4NT sells for $74.95 (plus shipping) for a single copy. We also offer the JP Software CD Suite which includes both 4NT and Take Command  for only $99.95.
 
По моему чересчур, на машину которая находится на работе. Поставил пакет портированных из-под линя программ Wbin. Там в принципе есть всё для "щастья". Только некорректно отображает кодировочку.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:45 21-02-2006
komper



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

Цитата:
komper
не совсем понятное условие
 
Цитата:
 если не пингуется то тоже отправляем сообщение и проигрываем звук  
- какой адрес не пингуется? Первый или второй?
 
Код:
 
@Echo Off
:Begin
Ping 192.168.0.1
GoTo :_Ping1_%ErrorLevel%
GoTo :EOF
 
:_Ping1_0
Echo 1-st IP ping - Yes
Ping 192.168.0.1
GoTo :_Ping2_%ErrorLevel%
GoTo :EOF
 
:_Ping1_1
Echo 1-st IP ping - No
GoTo :EOF
 
:_Ping2_0
Echo 2-st IP ping - Yes
Set t0=%Time%
Set t1=%t0:~3,2%
:Loop1
Set t2=%Time:~3,2%
If %t1% == %t2% GoTo :Loop1
GoTo :Begin  
GoTo :EOF
 
:_Ping2_1
Echo 2-st IP ping - No
Echo Проиграть звук
Net Send Comp111 Второй адрес не пингуется  
GoTo :EOF
 

 
Я работаю в интернет клубе!
У компании которая нам предоставляет услуги интернета, бывает много проблем.
1-я проблема у них часто падает шлюз с которого мы подключены.
2-я не работает vpn server
3-я не работает dns server
Если одно работает то другое не работает...
Я не могу постоянно сидеть в клубе и проверять работоспособность...
Мне нужно было уведомлять работника клуба в том что не работает интернет чтоб он выполнил какие либо действия в соответствии с указанными мною ранее...
Ну например, если не работает шлюз позвонить в офис компании и узнать в чем причина...
а если не работает днс то выполнить какие то действия...
Вот я и написал что получилось.... и еще как это можно упростить
 

Код:
echo off
:gw
color
ping 10.25.254.254
if not errorlevel 0 goto rline else goto gwmsg
 
:gwmsg
color 47
echo Ne pinguetsya shlyuz 10.25.254.254.
echo Zadachi:Proverit' estli svet na 31 dome
echo         Proverit' ne povrejden-li kabel'
echo         Pozvonit' Shamilyu na nomer +7960*******
echo Po bistree delayi a to budut vozmusheniya ot klientov
timeout /t 10
color
start /b C:\ping\hs_beep.exe E
net send 10.25.1.5 Pozvoni Shamilyu po nomeru +7960******* Internet ne rabotaet!!! SROCHNO!!!!
timeout /t 60
goto gw
 
:rline
color
ping 10.10.1.2
if not errorlevel 0 goto internet else goto rlinemsg
 
:rlinemsg
color 47
echo Ne pinguetsya server r-line
net send 10.25.1.5 Ne pinguetsya server r-line
start /b hs_beep.exe E
timeout /t 20
goto gw
color
 
:internet
ping 81.176.20.5
if not errorlevel 0 goto dns else goto internetmsg
:internetmsg
color 47
echo Internet ne podklyuchaetsya, nujno proveri' balans
net send 10.25.1.5 Internet ne podklyuchaetsya, nujno proveri' balans
start /b hs_beep.exe E
timeout /t 20
goto gw
 
ns
ping www.ya.ru
if not errorlevel 0 goto end else goto dnsmsg
nsmsg
echo Не работает днс сервер, возможно поможет перезагрузка компьютера!
 
:end
color 27
echo Проверка выполнена успешно! Радуйтесь интернет у вас работает!.  
timeout 180
goto gw

 
Этот батник стоит в автозагрузке и постоянно виден на экране сервера.
Цветовая схема дает на расстоянии понят работает интернет или нет

Всего записей: 56 | Зарегистр. 18-04-2004 | Отправлено: 12:03 21-02-2006 | Исправлено: komper, 12:08 21-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
komper
Если работает правильно - не лезь

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:55 21-02-2006
   

Страницы: 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 » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru