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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitrzn
Я помню, когда только обзаводился этой утилитой, то разные ее версии имели схожий, но все-таки различный синтаксис

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:25 29-09-2009
NuclearBox

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

Код:
Батником - не знаю, совсем недавно делал такое при помощи .vbs. Только чуть "по-задрюченнее": мне надо, чтобы когда инет "пропадал" запускалась прога на "перезагрузку" роутера . Могу выложить пример, если интересно.

 
Выложите, плз. Я надеюсь смогу его немного изменить - и будет что надо.

Всего записей: 17 | Зарегистр. 29-09-2009 | Отправлено: 12:57 29-09-2009
Sergey_AV



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NuclearBox
OK.
Подробнее...
Как-то примерно так - программер из меня тот еще . Но идея, надеюсь, понятна. Рад буду комментариям, в частности усовершенствованию скрипта - нет ведь ничего идеального...

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 13:15 29-09-2009 | Исправлено: Sergey_AV, 13:15 29-09-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
я вот с этой совладал forfiles.exe (5.2.3790.0)

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 14:46 29-09-2009
Kilyan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить делему!
У самого либо руки кривые либо уровень не тот.
 

Код:
start program.exe
:start
 
бла бла
 
goto start
Exit

 
Не могу добится того, чтобы - сначала вызвалась программа, после нее выполнялся цикл, и если программа закрылась, то завершился и цыкл (или и) закрылся Батник!!
SOS ребята помогите! очень хотся ресурсами Винды!
 
 

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 17:09 29-09-2009 | Исправлено: Kilyan, 17:10 29-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и как написанный код должен прибивать батник???
ну убей его killtask. того что написано недостаточно чтоб решить как этот фортель сделать.  
 
Добавлено:
start MyBatnik.bat
call program.exe
killtask   /f /im cmd.exe
работать будет но не факт что так как надо
 
или например через tasklist можно проверять работает ли программа

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:30 29-09-2009 | Исправлено: bomzzz, 17:35 29-09-2009
Kilyan



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

Код:
start "" /b program.exe
 
:start
бла бла
 
tasklist | find "program.exe"
if errorlevel 1 goto NoRecord
echo Found
goto Done
:NoRecord
Exit
Echo Not Found
one
 
goto start

 
Попробовал так! но тут идет заметная пауза, а ее не хочется(проверяется процесс)
 
еще есть идеи?

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 17:36 29-09-2009 | Исправлено: Kilyan, 17:36 29-09-2009
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:37 29-09-2009
01MDM



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

Код:
 
@echo off
start calc
 
:start
 
echo calc
 
2>nul tasklist /fi "imagename eq calc.exe" /nh | 1>nul findstr /v "fake" || exit /b
:: 1>nul ping -n 2 localhost
 
goto:start
 

 
Если будет большая нагрузка на проц (проверка в цикле не лучшая идея), то раскоменть строчку с пингом.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:41 29-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а че будет если вот так сделать?
killtask   /f /im *.*
компьютер перегрузится????
 
Добавлено:
чета вспомнить не могу как резидентная 16 битная программа делается. жалко в батниках прерываний нет.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:46 29-09-2009
vovanius1



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте! Подскажите, возможно ли (и как) получить адреса первичного и вторичного DNS-серверов в батнике? Не чтобы вручную:
 
set primary_dns_server=ххх.ххх.ххх.ххх
set secondary_dns_server=ууу.ууу.ууу.ууу
 
а чтобы батник сам узнал адреса из сети и потом присвоил эти адреса соответствующим переменным? Спасибо.

Всего записей: 276 | Зарегистр. 17-02-2007 | Отправлено: 20:28 29-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чтоб сам узнал из сети наверно нельзя.  разве перехватить чужие пакеты попробовать - только батником это врядли получится.
 
если не нужны локальные адреса можно использовать любой бисплатный днс сервер

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:30 29-09-2009 | Исправлено: bomzzz, 20:54 29-09-2009
ZDik

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите плиз
1) Создать к примеру n папок с названием n, в каждой m файлов с именем m
2) Создать список папок из файла типа:
папка1
папка2
...
папка

Всего записей: 164 | Зарегистр. 15-03-2006 | Отправлено: 22:17 29-09-2009
01MDM



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

Цитата:
Подскажите, возможно ли (и как) получить адреса первичного и вторичного DNS-серверов в батнике?  

 
Один интерфейс? Тогда попробуй так:

Код:
 
@echo off
setlocal
 
for /f "tokens=*" %%i in ('netsh diag show dns ^| findstr "[0-9]\.[0-9]"') do call:set %%i
set dns_
goto:eof
 
:set
set /a cnt+=1
if not "%2"=="" (set dns_%cnt%=%2) else (set dns_%cnt%=%1)
 

В 7-ке скорее всего работать не будет, а может и в висте.
 
 
Добавлено:
ZDik
Не совсем понятно что надо.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:34 30-09-2009
vovanius1



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение по DNS:
 
Команда nslookup выдает такое:
 
Default Server:  UnKnown
Address:  ххх.ххх.ххх.ххх
 
где ххх.ххх.ххх.ххх является адресом примари ДНС сервера. Можно сделать так, чтоб результат этой команды выдавался не на экран, а в некую переменную, а потом "выкусить" из этой переменной то что после Address:, это и будет искомый айпишник... Геморно, но пока ничего лучше не придумал...
 
Скрипт постом выше в Висте не пошел

Всего записей: 276 | Зарегистр. 17-02-2007 | Отправлено: 01:06 30-09-2009 | Исправлено: vovanius1, 01:13 30-09-2009
ZDik

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

Цитата:
Подскажите плиз  
1) Создать к примеру n папок с названием n, в каждой m файлов с именем m  
2) Создать список папок из файла типа:  
папка1  
папка2  
...  
папка

Задача 1) создать n папок, в каждой папке надо созать m файлов 0 длинны, где m - название папки, число от 1 до 200, n - название файла, число от 1 до 800 (те создать 160000 файлов 0 длины)
Задача 2) есть текстовый файл (1.txt) с названиями папок, вида:
папка1  
папка2  
...  
папка
при запуске баника должно создаться нужное количество папок названия которых хранятся в файле 1.txt, или как вариант еще приделать порядковый номер к названию папки

Всего записей: 164 | Зарегистр. 15-03-2006 | Отправлено: 07:28 30-09-2009 | Исправлено: ZDik, 07:35 30-09-2009
01MDM



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

Цитата:
Скрипт постом выше в Висте не пошел

 
Не понятно зачем в висте и 7-ке убрали контекст diag из netsh. Тогда такой вариант:

Код:
 
@echo off
setlocal enabledelayedexpansion
 
set "exec=wmic nicconfig get DNSServerSearchOrder /value"
for /f "tokens=2 delims=={}" %%i in ('%exec% ^| findstr [0-9]') do (
    for %%i in (%%i) do (
        set /a cnt+=1
        set "dns_!cnt!=%%i"
    )
)
set dns_
 


Код:
 
@echo off
for /f "tokens=2" %%i in ('nslookup') do set "address=%%i"
echo %address%
 

 
ZDik
задача 1:

Код:
 
@echo off
for /l %%i in (1,1,200) do (
    md %%i
    for /l %%j in (1,1,800) do cd.>%%i\%%j.txt
)
 

Задача 2

Код:
 
@echo off
for /f "tokens=*" %%i in (list.txt) do md "%%i"
 

 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:00 30-09-2009 | Исправлено: 01MDM, 10:08 30-09-2009
newhk



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня впрос, я не силен в переменных, посему не догоняю, как сделать, чтобы батник ожидал ответа от пользователя, ну например на заверщение процесса по его PID, поскольку он все время разный (первое что пришло в голову.... знаю, что можно завершить по названию процесса)
 
taskkill /f /PID  
дальше нужна какаято переменная...
 
 
можете направить в нужное русло?

Всего записей: 324 | Зарегистр. 02-02-2009 | Отправлено: 15:10 30-09-2009 | Исправлено: newhk, 15:11 30-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
killtask /f /im MyProcessName.exe
 
нужное русло кнопка винды плюс F1, W + F1

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:20 30-09-2009 | Исправлено: bomzzz, 15:21 30-09-2009
ZDik

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM спасибо, а если доработать 2 задачу: приделать порядковый номер к названию папки, если аналогичная папка на сетевом ресурсе если ее размер не равне 0, добавить в конце имени папки "-"
 
как сделать ярлык для ТС для запуска батника из папки "D:\Foto 1" и в качестве параметра указать текущую папку?

Всего записей: 164 | Зарегистр. 15-03-2006 | Отправлено: 20:31 30-09-2009 | Исправлено: ZDik, 21:04 30-09-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru