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

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



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
да только что пробовал - запускал с командной строки к примеру sleep 10  
вот на 10 сек и приостанавливается
D:\>sleep /?
usage: sleep howlong

Всего записей: 460 | Зарегистр. 09-12-2005 | Отправлено: 17:16 25-08-2006 | Исправлено: peculiar, 17:17 25-08-2006
GreaseOD

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

Цитата:
Добрый день.  
 
Подскажите как запустить инсталяцию из батника, подождать завершения инсталяции и запустить другую инсталяцию.  
 
Спасибо.

 
Если тебе надо устанавливать последовательно  батники  то  
 
call 1.bat
call 2.bat  
и т.д
 
 
Если ты запускаешь програмы  
start /wait landesk.exe
start /wait qwerty.exe
 

Всего записей: 30 | Зарегистр. 10-08-2006 | Отправлено: 17:23 25-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RussianNeuroMancer
Sleep  - входит в Windows Resource Kit
http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
12Mb

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:32 25-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ошибочное сообщение...

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 17:35 25-08-2006 | Исправлено: Kirillhome, 17:36 25-08-2006
Serge2005

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kirillhome
Мда.....что-то жестоко получается...ладно. буду пользоваться чем есть. Итак огромное спасибо!

Всего записей: 555 | Зарегистр. 11-02-2006 | Отправлено: 17:40 25-08-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Для паузы, можно использовать такую команду:
 

Код:
ping -n 5 localhost > nul

 
Там где 5, это количество секунд ожидания - хотя иногда почему-то у меня задержка длится немного дольше.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:25 25-08-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Serge2005

Цитата:
Помогите, пожалуйста: есть много (сотни) файлов формата:

Подобные одноразовые батники я обычно делаю таким образом:
Сначала командой "dir /b > list" создаю список нужных файлов и вставляю его в столбец Excel'я в двух экземплярах. Потом с одним из экземпляров можно проделать нужные вещи: разбить на составные части, собрать из нескольких столбцов дату, вычесть из неё нужное число дней, и т. п. После чего имя файла опять собирается (всё это делается формулами). Наконец, в последнем столбце пишу что-то вроде '="ren " & A1 & " " & A15' и копирую его в батник. Технология довольно универсальная, хорошо подходит для того, чтобы один-два раза переименовать/скопировать кучу файлов.  
 
GOODmen
Чисто админские задачи лучше задавать в топике В помощь системному администратору ». Быстрее ответят.
 
01MDM

Цитата:
Или как узнать о существовании процесса?

tasklist /FI "IMAGENAME eq cmd.exe" | find "cmd.exe"
и далее обрабатывать errorlevel

Цитата:
Как спрятать вывод команды при запуске/останове службы. > nul не работает  

> - перенаправление стандартного вывода (STDOUT). Ошибки программы обычно пишут в STDERR. Чтобы перенаправить и его, если не ошибаюсь, нужно добавить 2>&1 (подробности в hh ntcmds.chm, раздел "Использование операторов перенаправления команд"). Некоторые программы написаны так, что жёстко пишут в консоль не смотря ни на какие перенаправления; с ними, вероятно, ничего сделать нельзя.


----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 21:12 25-08-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
evle
 
 
Просто процесс, допустим cmd.exe, определить легко. А как определить запущена определенная служба или нет. По имени процесса не получается, т.к. многие службы используют одинаковые процессы.
 
Например:
Служба "windows audio" использует C:\windows\system32\svchost.exe -k netsvcs
Точно такую же команду для запуска используют еще полтора десятка служб, просто они используют разные *.dll.
 
Как узнать какая запущена, а какая нет.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:42 25-08-2006
WINIpuh

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

Всего записей: 65 | Зарегистр. 29-07-2006 | Отправлено: 00:18 26-08-2006
NightBowl



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

Цитата:
Как узнать какая запущена, а какая нет.

Смотри мой ответ здесь:
http://forum.ru-board.com/topic.cgi?forum=62&topic=7521#7

Всего записей: 309 | Зарегистр. 25-11-2003 | Отправлено: 17:59 26-08-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightBowl
 
Спасибо, правда неохота ставить весь RK.
 
Ограничился:

Код:
 
net start schedule > nul 2>&1
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:42 26-08-2006
RussianNeuroMancer



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Можно выложить отдельно?

----------
Kubuntu - официальный сайт, форум, русскоязычный сайт.

Всего записей: 9403 | Зарегистр. 30-04-2005 | Отправлено: 21:11 26-08-2006 | Исправлено: RussianNeuroMancer, 13:44 29-08-2006
GarEx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем здравствуйте!
 
Скажите, можно ли, чтобы bat-файл создавался сам?
 
1-й вариант:
Хотя вопрос, наверное, очень интересный, но все очень тривиально. К примеру, можно же указать, чтобы лог выполнения bat-файла записывался в файл (Auto.bat > Test.log), а вот чтобы он записывался посимвольно, т.е. мы указываем, например, букву "с" записать в файл "Test.log", затем букву "о" и т.д. Причем с переходом на новую строку, если это необходимо (записалась строка, затем переход, потом следующая .....).
 
2-й вариант:
И немного усложнить задачу:
Ищется файл с определенным именем (Test.sys), из его имени берется первая буква "T" (или любая другая, по-усмотрению, какая необходима) и записывается в файл "Test.log", затем ищется следующий файл, от его имени берется буква и записывается и т.д.
 
И еще один вопрос. Как передать в bat-файл параметры из файла? "Auto.bat < Test.log" не работает, не знаю почему. Просто из ком. строки "Auto.bat 123" - получается. В самом батнике написано - "set Path=%1".

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 00:06 28-08-2006
Kirillhome



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

Цитата:
И еще один вопрос. Как передать в bat-файл параметры из файла? "Auto.bat < Test.log" не работает, не знаю почему. Просто из ком. строки "Auto.bat 123" - получается. В самом батнике написано - "set Path=%1".  

Т.к. Auto.bat < Test.log переназначает ввод данных с консоли на файл Test.log, а не передаёт данный файл в качестве параметра.
 
Остальные вопросы, честно говоря, не понял....

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:26 28-08-2006
GarEx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
 
Так я и спрашивал, как передать параметр из файла, а не сам файл в качестве параметра. В файле "Test.log" написано, например "123". Если в консоли написать "Auto.bat 123" (В самом батнике написано - "set Path=%1"), и потом выполнить команду, ну пусть будет, "есно %Path%", то получится, что параметр "Path" имеет значение "123", а вот как сделать, чтобы "123" было записано в файле и параметр был передан именно из него?
 
А по остальным вопросам вроде написал подробно.... Необходимо создать батник в котором указывается: букву "а" записать в файл test.log, затем букву "б" записать в файл test.log и букву "в". В Итоге, если просмотреть файл test.log, то в нем будет (в первой строке) "абв". Затем перевести строку, т.е. с новой строки, аналогично записать "где" и т.д.
 
Ну и тоже самое, только с поиском файлов на диске: ищется файл с именем "агд.sys", из его имени берется первая буква и записывается в файл test.log, затем файл с именем "геб.sys" - берется третья буква, и в файл test.log. Ну и из имени файла "евд.sys" - вторая буква. В общем какую нужно букву записать в файл, та и ищется. Ну а файлы, само собой, ищутся те, которые присутствуют в любой винде (вроде notepad.exe, regedit.exe и т.д.). Кстати, необязательно файлы, можно и каталоги, и из их имен брать буквы (вроде windows/winnt - только "w", "i" ,"n", program files и т.д.)
 
Добавлено:
Kirillhome
 
Так я и спрашивал, как передать параметр из файла, а не сам файл в качестве параметра. В файле "Test.log" написано, например "123". Если в консоли написать "Auto.bat 123" (В самом батнике написано - "set Path=%1"), и потом выполнить команду, ну пусть будет, "есно %Path%", то получится, что параметр "Path" имеет значение "123", а вот как сделать, чтобы "123" было записано в файле и параметр был передан именно из него?
 
А по остальным вопросам вроде написал подробно.... Необходимо создать батник в котором указывается: букву "а" записать в файл test.log, затем букву "б" записать в файл test.log и букву "в". В Итоге, если просмотреть файл test.log, то в нем будет (в первой строке) "абв". Затем перевести строку, т.е. с новой строки, аналогично записать "где" и т.д.
 
Ну и тоже самое, только с поиском файлов на диске: ищется файл с именем "агд.sys", из его имени берется первая буква и записывается в файл test.log, затем файл с именем "геб.sys" - берется третья буква, и в файл test.log. Ну и из имени файла "евд.sys" - вторая буква. В общем какую нужно букву записать в файл, та и ищется. Ну а файлы, само собой, ищутся те, которые присутствуют в любой винде (вроде notepad.exe, regedit.exe и т.д.). Кстати, необязательно файлы, можно и каталоги, и из их имен брать буквы (вроде windows/winnt - только "w", "i" ,"n", program files и т.д.)
 
Добавлено:
сорри, случайно 2 раза получилось

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 02:51 28-08-2006
ViSiToR



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

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

 

Код:
For /f %%a in (Test.log) do set path=%%a

 
То, что будет указанно в файле Test.log, то и будет значением у переменной %Path%
 

Цитата:
Необходимо создать батник в котором указывается: букву "а" записать в файл test.log, затем букву "б" записать в файл test.log и букву "в". В Итоге, если просмотреть файл test.log, то в нем будет (в первой строке) "абв". Затем перевести строку, т.е. с новой строки, аналогично записать "где" и т.д.

 

Код:
chcp 1251
echo абв >> test.log
echo где >> test.log

Строка автоматом переводится, поэтому новая запись будет с новой строки.
 

Цитата:
сорри, случайно 2 раза получилось

Так ты можешь удалить лишнее    (Самообслуживание).

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:29 28-08-2006
GarEx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Visitor
 
chcp 1251  
echo абв >> test.log  
echo где >> test.log  
 
Надо записывать в файл посимвольно. А эта команда пишет слово в первую строку, затем
второе - во вторую. А если надо после "echo абв >> test.log" в той же строке написать "д"?

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 06:41 28-08-2006
GreaseOD

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

Цитата:
GreaseOD  
Для работ с текстом средства лучше, чем sed не найти.  
И задачи типа "заменить это на это" на нем решаются элементарно.  
Точнее сформулируй задачу—подскажу как ее решить.  

 
А как на счет добавить в конец строки значение?
Посмотрел я документацию про sed, но пока еще совсем не разобрался.

Всего записей: 30 | Зарегистр. 10-08-2006 | Отправлено: 09:52 28-08-2006
Kirillhome



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

Код:
 
chcp 1251
.
.
set first_str=а
set sec_str=г
.
.
set firts_str=%first_str%б
set sec_str=%sec_str%д
.
.
set firts_str=%first_str%в
set sec_str=%sec_str%е
.
.
echo %first_str% >> test.log
echo %sec_str% >> test.log
 

Т.е. набираем во время выполнения bat-файла строковые переменные, и в конце их выводим.

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 10:55 28-08-2006
CYBORG1980



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может не в тему... но придумал батник, который выводит имя процесса по его порту. т.е. вы вводите номер порта и получаете имя процесса который слушает этот порт.
 
@echo off
rem Работает только под XP и выше!
SET /p port=[Enter N port) ]  
@echo ---------------------------
for /f "tokens=5" %%a in ('netstat -nao ^| find ":%%port%% "') do set pid=%%a
echo Process ID - %pid%
@echo ---------------------------
for /f "tokens=1" %%b in ('tasklist ^| find " %%pid%% "') do echo Process - %%b
@echo ---------------------------
pause

Всего записей: 77 | Зарегистр. 27-05-2004 | Отправлено: 11:36 28-08-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