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

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

Модерирует : gyra, Maz

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

   

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 9736 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mr1
По поводу пункта 1. используй утилиту rcvt от Рошаля

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ ! Помогите плииз решить одну задачку...
Есть программка, которая запускается из под командной строки и в качестве аргумента задается имя файла.  
Например: program.exe file.txt  (но расширение файлов могут быть разные doc, xml, txt,dbf и т.д.)
Т.е. программка обрабатывает файл (что именно она делает не важно). Скажем запустить ее из под командной строки для одно файла не проблема, но если в папке лежит около сотни файлов и в ручную запускать для каждого файла..сами понимаете
Можно ли как-то автоматизировать этот процесс, т.е. задать ей обработать всю папку подряд, открывать файл, обработать ..закрыть, потом открыть второй файл..и т.д ?

Всего записей: 157 | Зарегистр. 09-09-2004 | Отправлено: 02:14 31-01-2006 | Исправлено: KIBER, 02:40 31-01-2006
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KIBER
Почитай в хэлпе про команду SHIFT. Можно сколько угодно параметров батнику передать.

Цитата:
 

@ECHO OFF
 
CD /D %~dp1
 
IF NOT " %2"==" " GOTO :_LOOP
ECHO RECEIVED PARAMETER "%~nx1"
PAUSE
EXIT
 
:_LOOP  
IF " %1" ==" " GOTO :_END
ECHO RECEIVED PARAMETER "%~nx1"
SHIFT  
GOTO :_LOOP
 
:_END
PAUSE
EXIT

 

 
А можно без SHIFT, тогда читай там же про команду FOR

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 04:18 31-01-2006
KIBER



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Честно говоря раньше не сталкивался с такими задачами, поэтому то что ты написал не совсем до меня дошло..точнее дошло, но как применить к моему случаю..надеялся будет пример хотябы.
Но всеравно спасибо, попробую почитать и разобраться, хотя время поджимает сильно.

Всего записей: 157 | Зарегистр. 09-09-2004 | Отправлено: 10:39 31-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KIBER
Если надо обработку запускать для всех файлов в папке, то то проще следующее
чем делать вызов вида parse.bat 1.txt 2.exe 3.doc 4.xls 5.xls...
см. код, вместо Эхо подставляй нужную последовательность действий
 

Код:
 
@Echo Off
FOR %%a in (*.*) Do Call :_Parse %%a
GoTo :EOF
 
:_Parse
Echo Обработка файла %1
GoTo :EOF
 

 

Код:
@ECHO OFF  
 
REM переход в папку указанную первым параметром
CD /D %~dp1  
 
REM Если второй параметр не пустой переходим на метку :LOOP, иначе завершаем работу БАТ-файла
IF NOT " %2"==" " GOTO :_LOOP  
ECHO RECEIVED PARAMETER "%~nx1"  
PAUSE  
EXIT  
 
:_LOOP  
REM Если второй параметр пустой завершаем работу БАТ-файла
IF " %2" ==" " GOTO :_END  
REM  Выводим 2-й параметр на экран или вставляем свою обработку
ECHO RECEIVED PARAMETER "%~nx2"  
REM Сдвигаем параметры так, что 2-й становится 1-м, 3-й становится 2-м, 4-й становится 3-м и т.д.
SHIFT  
REM Переходим на начало цикла
REM Цикл повторяется до тех пор пока на месте 2-го параметра не будут все парметры начиная со 2-го
GOTO :_LOOP  
 
:_END  
PAUSE  
EXIT  
 


Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:03 31-01-2006 | Исправлено: KapralBel, 11:11 31-01-2006
KIBER



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Так в том то и дело, что никаких действий не нужно делать. Когда я пишу в командной строке: program.exe file.txt
то программка program.exe обрабатывает файл file.txt и создает в этой же папке такой же файл, но со своим расширением типа: file.txt.sdf
и все..т.е. мне нужно как-то в батнике написать чтобы он запускал программку program.exe и попеременно подставлял в качестве как бы аргумента файлы в папке по очереди, таким образом обработав все файлы в папке...
 
Добавлено:
KapralBel
и что значит в твоем коде :_Parse ?
я так полагаю там как раз должно быть написано название программки ?  
 
Добавлено:
KapralBel
 
Спасибо большое, все заработало
Кстати, а как можно сделать чтобы батник лежал на диске в какой-то папке, а его можно было бы применять для любых папок на компе не кпируя батник в ту папку. Я только что попробовал прописать путь к программке: FOR %%a in (*.*) Do Call C:\papka1\program.exe %%a
 и запускаю командную строку в другой папке, но мне говорит что путь задан не верно..или может я не учел синтаксис указания пути ?

Всего записей: 157 | Зарегистр. 09-09-2004 | Отправлено: 11:12 31-01-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KIBER
_Parse это метка в батничке, см. 5-ю строку

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:38 31-01-2006
Nick 2003



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как с помощью батника поменять IP ? C помощю этого:

Цитата:
ipconfig /flushdns
ipconfig /release
ipconfig /renew
он 1 раз из 10 меняется. Есть определённое время, раньше которго его нельзя менять или что ? Потому что если отключить и включить сетевую карту, то IP всегда меняется. Можно ли тогда с помощью батника отключить/включить сетевую карту ? В общем, смысл в следующем - мне нужно с помощью батника поменять свой IP (анонимные серваки не подходят). Помогите, пожалуйста.

Всего записей: 13879 | Зарегистр. 18-07-2003 | Отправлено: 06:13 05-02-2006 | Исправлено: Nick 2003, 06:17 05-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Nick 2003
Какой срок аренды IP - адресов у DHCP-сервера?

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ кто знает как посмотреть рабочий стол из консоли ?
типа грабилка экрана
Заранее спасибо

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 02:47 19-02-2006
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slech
В 4NT есть возможность считать позицию экрана в текстовом режиме. Или что позразумевается под словами
Цитата:
посмотреть рабочий стол из консоли  
Что планируется делать с ним дальше?

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volodyalipkin
Типа консольный грабер.
В картинку скинуть его, но только не простой, а типа кк радмин может.
Граберы консольные обычно грабят из под конкретного юзера, а радмин из под системы может, т.е. показать что в данный момент на мониторе видно.

Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 23:16 19-02-2006
ShamaN



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, можно ли в bat файле переменной присвоить случайное значение в заданных пределах, как это делается в паскале
Код:
rnd:=random(10)

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

Всего записей: 1297 | Зарегистр. 23-09-2004 | Отправлено: 09:24 20-02-2006 | Исправлено: ShamaN, 09:25 20-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ShamaN
Set rnd=%Random%

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:51 20-02-2006
ShamaN



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KapralBel, а пределы как-нибудь задаются?

Всего записей: 1297 | Зарегистр. 23-09-2004 | Отправлено: 10:16 20-02-2006
KapralBel



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

Цитата:
%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.


Код:
 
Set rn=%Random%
Set /a rnd=%rn%/100
 

Для данного случая rnd принимает значения 0..327 - пробуй

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Честно читал все сообщения (заранее собщаю).
А вопрос такой : можно ли создать батник для такой задачи: при запуске
одной и той же базовой проги (не в виде процесса), в фоновом режиме (в крайнем случае явно) сразу за ней загружается перечень других и при  выгрузки базовой проги автоматом коректно выгружаются остальные.
 Допускаю ,что-кому то эта задача как два пальца об асфальт, но сильно не пинайте.
Если можно на примере конкретного листинга.Я просто от этого очень далек!

Всего записей: 48 | Зарегистр. 08-10-2004 | Отправлено: 21:15 20-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sully691
Какая у тебя ОС?
 
Для WinXP
Недостатки
1. TaskKill - не всегда корректно закрывает программы. Если не известен ключ командной строки, который завершает работу программы (или другой аналогичный способ) - то корректное завершение программы в автоматическом режиме - почти не выполнимое задание
 

Код:
 
@Echo Off
Rem запуск первой программы
Start dsc.exe
Rem Остальных программ
Rem Ждем минуту, для гарантированного запуска 1-й программы
Set t0=%Time%
Set t1=%t0:~3,2%
:Loop1
Set t2=%Time:~3,2%
If %t1% == %t2% GoTo :Loop1
Start Calc.exe
Start Calc.exe
Start Calc.exe
 
:Loop2
Set TaskWork=0
For /F "tokens=1 delims= " %%a in ('tasklist') Do Call :_Test %%a
If %TaskWork%==1 GoTo :Loop2
TaskKill /F /IM Calc.exe
GoTo :EOF
 
:_Test
Set task=%1
If /I "%task%"=="dsc.exe" Set TaskWork=1
GoTo :EOF
 

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cмысл понятен,большое спасибо KapralBel !
До конца не смог проверить ,так как TaskKill не нашел не у себя ,не в инете,а приемлемой замены ,без постоянного висения в памяти (типа Tkill,WinKill), не обнаружил.
Если поможет , могу перечислить конкретно запускаемые проги- это все для диалапа.
И вопрос по ходу - как можно вставить в батник ссылку на инет-соединение с папки
"Сетевые подключения" ?
 
 

Всего записей: 48 | Зарегистр. 08-10-2004 | Отправлено: 12:50 26-02-2006
Hrist



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ребят - помогите плиз...
у меня простая задача...
у меня создаеться архив кажную ночь (образ диска вернее говоря) акронисом.
и запускаеться смд - переименовывая его в текующу дату...
получаеться например три архива  
23.02.2006.тиб
24.02.2006.тиб
25.02.2006.тиб
 
 
нужно в смд задать команду что бы удалялся файл названием на 3 меньше чем текущая дата - т.е. 26го числа должен удалиться 23.02.2006.тиб, а 27 соотв 24.02.2006.тиб и так далее...
 
текущую дату я могу передать - а как от нее отнять три дня?
 
Добавлено:
Sully691

Цитата:
И вопрос по ходу - как можно вставить в батник ссылку на инет-соединение с папки "Сетевые подключения" ?  

 
вот глянь пример - это запуск обмена по диалапу:
 

Код:
@echo off
netsh interface set interface name=Maxim connect=DISCONNECTED
netsh interface set interface name=Kirovsk connect=CONNECTED
"C:\Program Files\1Cv77.ADM\BIN\1cv7s.exe" config /D E:\Trade\ /N Adm /P 0313 /@E:\1Cv77\Kir\ImExBD\ExpOS.prm
copy E:\1Cv77\Kir\ImExBD\Ex\*.* \\10.10.1.1\1Cv77\ImExBD\Im\ /Y
copy E:\1Cv77\Kir\Onlserv\*.* \\10.10.1.1\Trade\SRV\ /Y
copy E:\1Cv77\Kir\ImExBD\Run\Run.bat \\10.10.1.1\1Cv77\ImExBD\ /Y
:Begin
If exist run.bat goto run
goto begin
:run
call "C:\Program Files\1Cv77.ADM\BIN\1cv7s.exe" config /D E:\Trade\ /N Adm /P 0313 /@E:\1Cv77\Kir\ImExBD\ImOS.prm  
Del run.bat
Del E:\1Cv77\Kir\Onlserv\*.* /Q
netsh interface set interface name=Kirovsk connect=DISCONNECTED

 


----------
"Дьявол рождается из пены на губах ангела, защищающего правое дело". ГРИГОРИЙ ПОМЕРАНЦ

Всего записей: 2897 | Зарегистр. 24-06-2002 | Отправлено: 08:56 27-02-2006 | Исправлено: Hrist, 09:07 27-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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru