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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
есть утилитка такая pv
 
#pv -l | find "emule.exe"
emule.exe           2824 "E:\Work\My Documents\Program Files\Emule\emule.exe"

 
cmdow /RUN /HID calc неработает
cmdow /RUN /HID notepad работает
 
Вот у меня и есть проблема  
как из строчки вида cmdow 0x050212 1  684 Max Ina Ena Vis emule    eMule v0.47a вытащить 0x050212
что бы потом в качестве параметра послать cmdow.
 
 

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 10:40 21-07-2006 | Исправлено: slech, 10:42 21-07-2006
KapralBel



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

Код:
@Echo Off
Set ID=0
For /F "tokens=1-9 skip=1 delims=^& " %%a in (1.txt) Do Call :_P %%a "%%i"
:IsID
Echo ID=%ID%
GoTo :EOF
 
:_P
if /i %2=="eMule" Set ID=%1
GoTo :EOF

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
К сожалению почти ничего не понял

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 11:37 21-07-2006
KapralBel



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

Код:
 
@Echo Off
 
Rem Сброс процессов в файл process.txt
cmdow >process.txt
 
Rem Инициализация номера процесса
Set ID=0
 
Rem Перебор файла для поиска процесса eMule
For /F "tokens=1-9 skip=1 delims=^& " %%a in (process.txt) Do Call :_P %%a "%%i"
 
Rem Скрытие процесса
cmdow %ID% /hid
 
Rem Выход из батничка
GoTo :EOF
 
Rem процедура выделения ИД процесса
:_P
 
Rem Проверка условия Имя процесса=eMule и присвоение переменной его ИД
if /i %2=="eMule" Set ID=%1
 
Rem Выход из подпрограммы
GoTo :EOF

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Я тут немного измнил что бы быстрее сделать, но работать не хочет.
@Echo Off  
 
Rem Сброс процессов в файл process.txt  
cmdow | find "eMule v" >process.txt
 
Rem Инициализация номера процесса  
Set ID=0  
 
Rem Перебор файла для поиска процесса eMule  
For /F "tokens=1-9 skip=1 delims=^& " %%a in (process.txt) Do Call :_P %%a "%%i"  
 
Rem Скрытие процесса  
Rem cmdow %ID% /hid
echo %ID% >ID.txt
Rem Выход из батничка  
GoTo :EOF  
   
Rem процедура выделения ИД процесса  
:_P  
 
Rem Проверка условия Имя процесса=eMule и присвоение переменной его ИД  
if /i %2=="eMule" Set ID=%1  
 
Rem Выход из подпрограммы  
GoTo :EOF  

 
Смотрим ID.txt видим 0
В моём случае ID
0x0C03B2 1 3496 Max Ina Ena Hid emule    eMule v0.46c
 
Как выделить первые 9-ть символов из файла ?

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 12:34 21-07-2006 | Исправлено: slech, 12:35 21-07-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
slech
Если ты фильтруешь FINDом, то убери в команде FOR подстроку Skip=1, которая при разбое файла пропускает первую строку (которая в оригинале является шапкой)
А так как Финд - сбрасывает одну строку (теоретически) - то она и пропускается
 
Добавлено:
Кстати  
1 .я посмотрел у себя некоторые процессы имеют ИД не только из 9 символов
2. А первую подстроку, до пробела выделяет псевдопеременная %%a из команды FOR

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Да нет и в твоём первоначальном варианте гдето есть проблемка.
 
Rem Перебор файла для поиска процесса eMule  
For /F "tokens=1-9 skip=1 delims=^& " %%a in (process.txt) Do Call :_P %%a "%%i"  
 
Rem процедура выделения ИД процесса  
:_P  
   
Rem Проверка условия Имя процесса=eMule и присвоение переменной его ИД  
if /i %2=="eMule" Set ID=%1  
 
гдето тут проблема, даже если без find
 
Добавлено:
KapralBel
Блин извени конечно за мою тупость, но не могбы прояснить как  
выделить эти самые 9 символов и присвоить их чему-нибудь что бы передать cmdow
 
Добавлено:
У меня все процессы не больше 9-ти символов.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 12:51 21-07-2006 | Исправлено: slech, 13:25 21-07-2006
KapralBel



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

Цитата:
а нет и в твоём первоначальном варианте гдето есть проблемка.

У меня все работало
 
Выделение первых 9 символов из переменной string1
Set string2=%string1:~0,9%
 
У меня есть процессы по 10 символов в идентификаторе
 
Попробуй такой вариант

Код:
@Echo Off
cmdow | find "eMule v">process.txt
Set ID=0
For /F "tokens=1" %%a in (process.txt) Do Set ID=%%a
cmdow %ID% /hid
GoTo :EOF
 

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Во теперь работает и я уже даже понял как.
Спасибо огромное.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 16:55 21-07-2006
PetrK



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как сделать временную задержку на исполнение программы.
 
Хочу создать ярлык или bat-файл для task manager и положить его в папку автозагрузка. Нужно это для того, чтобы при загрузки компьютера грузился task manager, но не сразу, а с задержкой.
 
Спасибо.

Всего записей: 134 | Зарегистр. 27-05-2006 | Отправлено: 20:16 22-07-2006 | Исправлено: PetrK, 20:16 22-07-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PetrK
Есть програмка sleep
Она тебе поможет.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 21:08 22-07-2006
hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PetrK
Посмотри в этом топике, есть пример того, как ping'ом задержку делать.

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 14:12 23-07-2006
vasiliy74



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такая непонятная ситуация есть сеть на Win2000 пользователь домена, является локальным администратором, ехе запускаются а bat нет пишет нет прав, в доступе и правах безопасность выбрано полный доступ, попробовал ещё несколько файлов та же ситуация???

Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 09:08 24-07-2006
as_esm



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, все.
буду краток
 
задача 1:
получить адрес папки рабочего стола в переменную %Desktop% (наподобие %USERPROFILE%), независимо от версии и локализации windows
 
(хотелось бы ещё %MyDocuments% но это не так важно)


задача 2:
дописать в переменную %Path%, какой либо путь (например текущий путь  - %CD%), тоже независимо от версии windows
 
если в win-9x можно просто использовать  
echo PATH=%%PATH%%;%CD% >> c:\AUTOEXEC.BAT
 
то в win-NT, хотелось бы дописать в реестр, а экспортированный ключ
там выглядит приблизительно вот так:
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"Path"=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,\
 3b,25,53,79,73,74,65,6d,52,6f,6f,74,25,3b,25,53,79,73,74,65,6d,52,6f,6f,74,\
 25,5c,53,79,73,74,65,6d,33,32,5c,57,62,65,6d,00
 
есть ли  способ (или консольная утилитка), дописать в переменную %PATH%?

Всего записей: 58 | Зарегистр. 22-03-2003 | Отправлено: 14:56 24-07-2006
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
as_esm
4NT ( http://jpsoft.com ) и будет Вам счастье

Всего записей: 771 | Зарегистр. 12-10-2002 | Отправлено: 06:38 25-07-2006
MichaelGIN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто нибудь знает как в бат-файле прописать подключение к ftp (имя пользователя и пороль), и скачать файл с локального диска (c:\1.bat)  на сервер 0:DKA100:[000000.PLSROOT.ZIPS]?

Всего записей: 9 | Зарегистр. 25-07-2006 | Отправлено: 14:17 25-07-2006
as_esm



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volodyalipkin
спасибо конечно, но что-то "нет счастья в личной жизни", 4NT - это командый интерпретатор, не понятно к какому месту его мне прикладывать. я конечно посмотрю поподробней, но мне нужно решение для стандартных командных файлов. это нужно для самоинталирующихсяя самонастраивающихся пакетиков с ПО. хотелось бы это сделать без сторонних инсталяторов, средствами cmd. на крайний случай можно былобы воспользоваться некими утилитками типа  add2path %CD%, Desktop = getDesktop.
 
а может это можно сделать и средствами системы, выдрав информацию из реестра, только я пока не придумал, как это сделать. с десктопом можно было бы плясать от %USERPROFILE%,  если бы папка десктопа не называлась по разному... и в 9x наверно нет такой переменной.
 

Всего записей: 58 | Зарегистр. 22-03-2003 | Отправлено: 14:44 25-07-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
as_esm
Можно попробовать с помощью setx из support tools поставить переменную в соответствии с ключом реестра. Но при этом есть некоторые ограничения.

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

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 14:49 25-07-2006
as_esm



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MichaelGIN
об этом писал ipmanyak см. здесь http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=100#14
 
evle
спасибо за подсказку буду смотреть...: Support Tools , Download Support Tools  
 

Всего записей: 58 | Зарегистр. 22-03-2003 | Отправлено: 14:57 25-07-2006 | Исправлено: as_esm, 15:14 25-07-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
as_esm
Посмотри ещё здесь про вынимание значений прямо из реестра.

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

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 16:01 25-07-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