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

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



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

Цитата:
 
Подстановка переменной среды может быть расширена следующим образом:
 
    %PATH:str1=str2%
 
расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2".  "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".
 

Проблема в том что если использовать вместо str1 путь C:\Program то поиск будет только части до обратного слэша \
 
Добавлено:
VelDmi

Код:
 
@Echo Off
For /F "delims=#" %%a In (OemInfo.ini) Do Call :_P1 %%a
Echo WorkDate: %dtWork%
GoTo :EOF
 
:_P1
Set Str1=%*
Set Str2=%Str1:~0,10%
If /I "%STR2%"=="LINE1=LAST" Call :_p2 %str1%
GoTo :EOF
 
:_P2
For /F "tokens=4" %%a In ('Echo %*') Do Set dtWork=%%a
GoTo :EOF
 


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

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Конструкция
%PATH:str1=str2%
Работает только если str1 и str2 явно заданы, а нужно str1 в виде переменной окружения передать

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 13:06 03-02-2006
KapralBel



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

Код:
 
@Echo Off
Set str1=C:\Windows
Echo Echo %%Path:%str1%=Винда%% ^>^>File.txt >>Temp.Cmd
Call Temp.Cmd
 

Странно но теперь корректно заменяет
 
Добавлено:
Etalon
Полный вариант

Код:
 
@Echo Off
Set BasePath=%1
 
Del File.txt /q
Echo @Echo Off >Temp.Cmd
for /r %1 %%f in (*.*) do Call :_P1 ^"%%f^"
Call Temp.Cmd
GoTo :EOF
 
:_P1
Set File=%1
Echo Set FN=%1 >>Temp.Cmd
Echo Echo %%FN:%BasePath%=.\%% ^>^>File.Txt >>Temp.Cmd
GoTo :EOF
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:32 03-02-2006
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Переменно %BasePath% в конце где-то пробел прицепляется, а посему не работает
Но идея конечно интересная

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 15:14 03-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Etalon
Когда ты копируешь текст данного батничка, в конце каждой строчки вставляется пробел.
Проверь

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:19 03-02-2006
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да заметил, спасибо

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 15:45 03-02-2006
Psih



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые, а есть возможность проделать следующее (с помощью bat/cmd файла):
Запустить 1.ехе, через время "n" (в секундах) запустить 2.ехе, через время "m" (сек) запустить 3.ехе, закрыть окно командной строки?

Всего записей: 42 | Зарегистр. 24-07-2002 | Отправлено: 18:42 03-02-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еть вопросик и просьба
 
1.Есть необходимость авторизироваться на сайте, а после авторизации скачать файл, предварительно проверив дату рядом с ним и время, и если файл сегодняшний, то можно скачивать, если нет то прекратить оперецию и сказать что файл несвеж(по одной и тойже ссылке, но там php  видимо ссылка меняется).  
 
2.Затем заархвировать
 
rar a -df -m5 w.rar w.xls
 
3.а потом разослать на мыло.
 
1. Незнаю как сделать, может с помощью скрипта на php ?
2. Знаю
3. На предыдущих страницах прочитал про smtpsend и smtpsend - думаю разберусь.
 
Если несложно, направьте меня в нужном напрвлении.
 
Заранее спасибо.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 21:17 03-02-2006 | Исправлено: slech, 21:24 03-02-2006
VelDmi

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Спасибо друг. Твой код блестяще работает!!!
Только вот с этими EOF не знал как вставить строки в основной батник. Пришлось его сделать отдельным файлом, а из основного запускать Call Date.cmd.

Всего записей: 534 | Зарегистр. 03-12-2002 | Отправлено: 03:11 04-02-2006
hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Psih
Конечно да, почитай тему и найдешь, как сделать задержку на n секунд.

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:45 04-02-2006
RussianNeuroMancer



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slech
Цитата:
1.Есть необходимость авторизироваться на сайте, а после авторизации скачать файл, предварительно проверив дату рядом с ним и время, и если файл сегодняшний, то можно скачивать, если нет то прекратить оперецию и сказать что файл несвеж(по одной и тойже ссылке, но там php  видимо ссылка меняется).

Цитата:
1. Незнаю как сделать, может с помощью скрипта на php ?
Если этот язык программирования для тебя наиболее знаком, то проще всего тогда будет на нём писать, если есть другие, то тогда смотри сам: в каком лучше разбираешься (из современных) на том и пиши.


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

Всего записей: 9403 | Зарегистр. 30-04-2005 | Отправлено: 23:00 04-02-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо разослать письма на 45 адресов, mail.ru позволяет за раз не более 15, поэтому получается минимум 3 заза.
 
Программа sendEmail-v152.zip
 
Строчка вида  
sendEmail -f xx@mail.ru -t mail1@mail.ru -u %date -m -s smtp.mail.ru -o timeout=4 -xu user -xp pass -a xx.rar -l ss.txt
 
Так вот в чём вопрос.
Из файла адреса программа вроде брать не умеет, остаётся их подставлять из какогото файла.
Например так
set mail1=1-ая строчка файла mail.txt
set mail2=2-ая строчка файла mail.txt
..................................................и тд.
 
А далее
sendEmail -f xx@mail.ru -t %mail1% -u %date -m -s smtp.mail.ru -o timeout=4 -xu user -xp pass -a xx.rar -l ss.txt
sendEmail -f xx@mail.ru -t %mail2% -u %date -m -s smtp.mail.ru -o timeout=4 -xu user -xp pass -a xx.rar -l ss.txt
 
Как это оформить в один батник ?

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 02:44 05-02-2006 | Исправлено: slech, 02:51 05-02-2006
vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
slech
for /F %%a in ('type mail.txt') do sendEmail -f xx@mail.ru -t %%a -u %date .....

----------
I am free of all prejudice. I hate everyone equally.

Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 05:52 05-02-2006 | Исправлено: vu1tur, 05:53 05-02-2006
slech



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

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 12:44 05-02-2006 | Исправлено: slech, 04:06 06-02-2006
slech



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

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 01:12 06-02-2006 | Исправлено: slech, 04:07 06-02-2006
Abrosov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
такая задача наверное уже возникала,
но все-таки
 
имеется диск c:
имеется список файлов с образцового диска
надо убрать с диска c: всё лишнее, руководствуясь списком
пробовал сделать через findstr,
но так и не понял, как узнать что файла НЕТ в списке

Всего записей: 122 | Зарегистр. 06-11-2004 | Отправлено: 07:04 06-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VelDmi
GoTo :EOF - это переход на конец файла
Из подпрограммы оставляешь EOF
Из основной - ставишь GoTo :_SetTime вместо GoTo :EOF
и дальше

Код:
 
:_SetTime
Set dtCurrent=%date%  
Set dtWork=03.02.2006  
IF /i %dtWork% GTR %dtCurrent% Date %dtWork%
 

 
Или так

Код:
 
@Echo Off  
For /F "delims=#" %%a In (OemInfo.ini) Do Call :_P1 %%a  
Echo WorkDate: %dtWork%  
Set dtCurrent=%date%  
Set dtWork=03.02.2006  
IF /i %dtWork% GTR %dtCurrent% Date %dtWork%  
GoTo :EOF  
 
:_P1  
Set Str1=%*  
Set Str2=%Str1:~0,10%  
If /I "%STR2%"=="LINE1=LAST" Call :_p2 %str1%  
GoTo :EOF  
 
:_P2  
For /F "tokens=4" %%a In ('Echo %*') Do Set dtWork=%%a  
GoTo :EOF  
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:24 06-02-2006 | Исправлено: KapralBel, 11:55 06-02-2006
evle



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

Цитата:
Кстати кто знает как батник запустить в фоновом режиме ?

Скрыть окно можно с помощью cmdow

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

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 11:25 06-02-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Abrosov
Анализируешь значение ErrorLevel
0 - найдено
1 - не найдено

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите разобраться с проблемой: (уже спрашивал, но ответа не получил)
 
Если не знать точного пути к Opera - как можно в скрипт его поставить зная что ветка в реестре?:  

Код:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Netscape\Netscape Navigator\Opera\Main]
"Install Directory"="C:\\Program Files\\internet\\Opera"
"Plugins Directory"="C:\\Program Files\\internet\\Opera\\Program\\Plugins"
 

 
Надо чтоб из этого файла в мой батник вставился путь C:\Program Files\internet\Opera
 
Я знаю и видел что где то в начале темы это уже обсуждалось но на более профессиональном уровне. Я там не понял что к чему.
Разжуйте плиз.  
Я понимаю что надо экспортнуть ветку рееста во временный файл и там найти строку содержащую путь к программе а потом этот путь вставить в мой батник.  
Как это делается?

Всего записей: 38 | Зарегистр. 08-09-2004 | Отправлено: 12:16 06-02-2006 | Исправлено: MonsterMax, 12:40 06-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

Компьютерный форум 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