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

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

Автор: peculiar
Дата сообщения: 25.08.2006 16:16
да только что пробовал - запускал с командной строки к примеру sleep 10
вот на 10 сек и приостанавливается
D:\>sleep /?
usage: sleep howlong
Автор: GreaseOD
Дата сообщения: 25.08.2006 16:23
nitrax

Цитата:
Добрый день.

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

Спасибо.


Если тебе надо устанавливать последовательно батники то

call 1.bat
call 2.bat
и т.д


Если ты запускаешь програмы
start /wait landesk.exe
start /wait qwerty.exe

Автор: KapralBel
Дата сообщения: 25.08.2006 16:32
RussianNeuroMancer
Sleep - входит в Windows Resource Kit
http://download.microsoft.com/download/8/e/c/8ec3a7d8-05b4-440a-a71e-ca3ee25fe057/rktools.exe
12Mb
Автор: Kirillhome
Дата сообщения: 25.08.2006 16:35
Ошибочное сообщение...
Автор: Serge2005
Дата сообщения: 25.08.2006 16:40
Kirillhome
Мда.....что-то жестоко получается...ладно. буду пользоваться чем есть. Итак огромное спасибо!
Автор: ViSiToR
Дата сообщения: 25.08.2006 18:25
Для паузы, можно использовать такую команду:


Код: ping -n 5 localhost > nul
Автор: evle
Дата сообщения: 25.08.2006 20:12
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, раздел "Использование операторов перенаправления команд"). Некоторые программы написаны так, что жёстко пишут в консоль не смотря ни на какие перенаправления; с ними, вероятно, ничего сделать нельзя.
Автор: 01MDM
Дата сообщения: 25.08.2006 22:42
evle


Просто процесс, допустим cmd.exe, определить легко. А как определить запущена определенная служба или нет. По имени процесса не получается, т.к. многие службы используют одинаковые процессы.

Например:
Служба "windows audio" использует C:\windows\system32\svchost.exe -k netsvcs
Точно такую же команду для запуска используют еще полтора десятка служб, просто они используют разные *.dll.

Как узнать какая запущена, а какая нет.
Автор: WINIpuh
Дата сообщения: 25.08.2006 23:18
При помощи команды taskkill можно убить определенные процессы, а как сделать так
чтоб оставить определенные процессы, а все остальные убить???
Автор: NightBowl
Дата сообщения: 26.08.2006 16:59
01MDM

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

Смотри мой ответ здесь:
http://forum.ru-board.com/topic.cgi?forum=62&topic=7521#7
Автор: 01MDM
Дата сообщения: 26.08.2006 19:42
NightBowl

Спасибо, правда неохота ставить весь RK.

Ограничился:

Код:
net start schedule > nul 2>&1
Автор: RussianNeuroMancer
Дата сообщения: 26.08.2006 20:11
KapralBel
Можно выложить отдельно?
Автор: GarEx
Дата сообщения: 27.08.2006 23:06
Всем здравствуйте!

Скажите, можно ли, чтобы 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".
Автор: Kirillhome
Дата сообщения: 28.08.2006 00:26
GarEx

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

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

Остальные вопросы, честно говоря, не понял....
Автор: GarEx
Дата сообщения: 28.08.2006 01:51
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 раза получилось
Автор: ViSiToR
Дата сообщения: 28.08.2006 02:29
GarEx

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



Код: For /f %%a in (Test.log) do set path=%%a
Автор: GarEx
Дата сообщения: 28.08.2006 05:41
Visitor

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

Надо записывать в файл посимвольно. А эта команда пишет слово в первую строку, затем
второе - во вторую. А если надо после "echo абв >> test.log" в той же строке написать "д"?
Автор: GreaseOD
Дата сообщения: 28.08.2006 08:52
xitsa

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


А как на счет добавить в конец строки значение?
Посмотрел я документацию про sed, но пока еще совсем не разобрался.
Автор: Kirillhome
Дата сообщения: 28.08.2006 09:55
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
Автор: CYBORG1980
Дата сообщения: 28.08.2006 10:36
Может не в тему... но придумал батник, который выводит имя процесса по его порту. т.е. вы вводите номер порта и получаете имя процесса который слушает этот порт.

@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
Автор: isem
Дата сообщения: 28.08.2006 11:17
xitsa

Большое спасибо. Разобрался
Автор: antsh85
Дата сообщения: 28.08.2006 18:02
Ребята нужен батник который бы вырубал все сервисы связанные с явой:

java.exe
javaw.exe

какая команда для этого нужна?
Автор: GarEx
Дата сообщения: 28.08.2006 18:18
Kirillhome

Спасибо! То что надо!!

Автор: RussianNeuroMancer
Дата сообщения: 28.08.2006 18:30
antsh85
taskkill может подойдёт?
Автор: antsh85
Дата сообщения: 28.08.2006 19:25
RussianNeuroMancer
THX a lot
Автор: Serge2005
Дата сообщения: 28.08.2006 20:41
Скажите, пожалуйста, можно ли из коммандной строки отключить ( потом и подключить) ВСЕ сетевые интерфейсы (не только простые сетевые карточки, но и 1394, ик, bluetouth, Wi-Fi....)?
Автор: ViSiToR
Дата сообщения: 28.08.2006 20:49

Цитата:
art569


Цитата:
Проверил на всех предыдущих URL


Появилась проблема - Дело в том, что если у ссылки есть пробеды в пути, или такие спецсимволы как &, то всё-ровно будет errorlevel 1 - Можно и эту проблему побороть?
Желательно в таком виде батник:


Код: @echo off
curl.exe -i -L --head -D log http://my.opera.com/Creat0R/homes/files/curl%26test.zip >nul 2>nul
if errorlevel 1 (
echo error> error.tmp
Exit)

for /f "tokens=2 delims= " %%i in ('find /i "HTTP" log.') do (set http=%%i)
for /f "tokens=2 delims=; " %%i in ('find /i "Content-Type:" log.') do (set content=%%i)
del /q log. >nul

if Not %http% EQU 200 (
echo error> error.tmp
exit)

if %content% == text/html echo error> error.tmp
Автор: GarEx
Дата сообщения: 28.08.2006 20:58
Доброго времени суток!

Есть такой код (взял с форума). http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=220#18

Можно ли его изменить с учетом того, что мы не знаем ip-адреса машин в данной сети. т.е. сделать универсальным. И чтобы, если пинг проходит, то на эту машину копировался файл.

Я мыслю так: сначала даем команду ipconfig > ip.txt. В текстовом файле у нас получается следующее:

Адаптер Ethernet Подключение по локальной сети:

DNS суффикс этого подключения . . :
IP-адрес . . . . . . . . . . . . . . : 169.254.0.5
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 169.254.0.1

Из этого файла узнаем, что компы с адресами 169.254.0. ......
Затем начинаем пинговать всю сеть 169.254.0.1 - 169.254.0.254, и если комп включен, пинг проходит и мы копируем на него файл, т.е. выполняем, например,
copy c:\WordDoc.doc \\169.254.0.25\d$\мои документы

Заранее спасибо.

Автор: tolyn77
Дата сообщения: 29.08.2006 07:30
KapralBel


Цитата:
@Echo Off
Set cWork=0
For /l %%a In (2,1,254) Do Call :CompWork 192.168.0.%%a
If %cWork%==0 (ShutDown /?)
GoTo :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1)
GoTo :EOF


не подскажешь чего у меня ошибка выходит?
"Не удается найти указанную метку пакетного файла - CompWork"
Автор: KapralBel
Дата сообщения: 29.08.2006 08:41
tolyn77
У меня все работает

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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