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

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



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

Цитата:
DocBeen  
Пуск\Сетевые подключения  
смотришь как называется подключение к интернету - пусть Супер-Пупер Интернет  
так и запускаешь  
RASDial "Супер-Пупер Интернет"

 
а если в результате появляется 691 ошибка, уже ни как не исправить?

Всего записей: 147 | Зарегистр. 15-07-2005 | Отправлено: 15:50 01-10-2006
KapralBel



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

Цитата:
691
 
Ваша учетная запись не зарегистрирована в домене, истек срок действия вашего пароля или вы ошиблись при вводе данных. Если вы не задали домен, сервер удаленного доступа попытается проверить имя пользователя и пароль в домене, членом которого он является.
 
Аккуратно повторите ввод имени пользователя, пароля и домена. Если вы неуверенны в этих данных, обратитесь к своему системному администратору.
 

А при дозвоне через Сетевые подключения - идет нормально?
Пароль не запрашивает?

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DocBeen  
 
Цитата:691  
 
Ваша учетная запись не зарегистрирована в домене, истек срок действия вашего пароля или вы ошиблись при вводе данных. Если вы не задали домен, сервер удаленного доступа попытается проверить имя пользователя и пароль в домене, членом которого он является.  
 
Аккуратно повторите ввод имени пользователя, пароля и домена. Если вы неуверенны в этих данных, обратитесь к своему системному администратору.  
 
 
 
А при дозвоне через Сетевые подключения - идет нормально?  
Пароль не запрашивает?
 
При дозвоне через сетевые подключения все нормально - спрашивает и проверяет пароль - все нормально....

Всего записей: 147 | Зарегистр. 15-07-2005 | Отправлено: 17:19 01-10-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DocBeen
Т.е. пароль ты вводишь ручками?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:27 01-10-2006
Den_Klimov



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

Цитата:
По поводу 1-го батника - правильно ли я понимаю, что если в каталоге "б" есть файл  
test.txt  
и подкаталог  
test  
с файлом  
test.txt  
(файл test.txt есть в списке), то в каталог "с" будет переписан сначала один, а потом второй файл???  

Уже немножко отредактировал предыдущий пост. При формулировке задачи я одно важное слово упустил - "КОРНЯ".
В общем, в первом искомом батнике в каталог "с" из каталога "b" будут переписаны только ТЕ файлы и папки, которые имеются в файл-списке (который необходимо создать на основе содержимого КОРНЯ каталога "a").
Таким образом если в КОРНЕ каталога "a" были и файл test.txt и папка test, то в этом случае и из КОРНЯ каталога "b" в каталог "с" будут переписаны целиком и вместе со всем содержимым и файл test.txt и папка test (со всеми своими файлами и подкаталогами), но ТОЛЬКО если они находились в КОРНЕ каталога "b". При этом содержимое подкаталогов каталога "а" не должно указываться в файл-списке. Запоминаются и выводятся в файл-список только те файлы и папки которые находятся В КОРНЕ каталога "а"! И уже в КОРНЕ каталога "b" производится поиск файлов и папок которые соответствуют указанным в файл-списке.
И если в КОРНЕ каталога "а" был только файл test.txt, то естественно, что папка test вместе с её содержимым, каким-бы оно ни было, копироваться в каталог "c" не будет. Но если в КОРНЕ была и папка test, то копируется и она (естественно вместе со всем своим содержимым). Это понятно.
 
Кстати отличие второго искомого батника от первого именно в том и заключается.
1. Что в файл-список в первом случае выводится содержимое только лишь КОРНЯ каталога "а" (независимо будут то файлы или папки). И таким образом дальнейшие действия с возможно существующими объектами в каталоге "b" производятся только к тем ФАЙЛАМ и ПАПКАМ, которые распологаясь в КОРНЕ каталога "b" полностью совпадают по имени.расширению, с аналогичными файлами в корне каталоге "а".
 
2. А во втором выводится ПОЛНАЯ СТРУКТУРА файлов, включая файлы находящиеся в подкаталогах (с сохранением структуры их расположения в подкаталогах каталога "а"). И таким образом дальнейшие действия с возможно существующими объектами в каталоге "b" производятся только к тем ФАЙЛАМ, которые полностью совпадают и по имени.расширению и по своему относительному расположению в структуре подкаталогов в каталоге "b" с аналогичными файлами и папками в каталоге "а".
Таким образом, в отличии от первого искомого батника, хотя копируются ТОЛЬКО ФАЙЛЫ, но копируются они с полным сохранением структуры каталогов относительно корня папки вначале "a" и "b", а потом и "c" (куда они копируются).

Цитата:
И (очень похоже, но - возможно и ошибаюсь) - п. 2-4 можно заменить одним - не копировать, потом снимать атрибуты, потом удалять, а просто переместить???

Условие задачи для искомых мною батников составлено таким образом, чтобы я сам на основе этих батников мог бы понять и научиться.
В принципе вы правы. Но такой вариант более гибкий. Так как в любой момент можно удалить строку отвечающую за резервное копирование (пункт 2.), оставив снятие атрибутов и удаление.
К тому же необходимо чтобы действие гарантированно применялось для всех заданных в задаче объектов. Включая объекты имеющие атрибуты скрытые, системные и только чтение. Но чтобы эти объекты предварительно копировались/перемещались (смотри пункт 2.) со всеми своими оригинальными атрибутами (очень желательно).
----------------
Помогите ребята! Очень прошу!
 
Подобные пакеты командных строк можно было бы использовать в очень многих различных сложных bat-никах для весьма разнообразных задач. В том числе для создания простых инсталляционных пакетов на основе обычных самораспаковывающихся архивов. Естественно с использованием утилиты полного 100% скрытия работы cmd-файла - hidcon.exe (кстати, если кому нужен hidcon.exe могу выложить).

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 18:47 01-10-2006 | Исправлено: Den_Klimov, 19:50 01-10-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Den_Klimov
Ну, вторая задача - в общем решена...
Смотрим здесь... и критикуем/задаем вопросы....

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 03:48 02-10-2006
Belousov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как БАТ-ником узнать состояние сетевого принтера до старта системы, то-есть, что-бы комп писал сообщение типа "Принтер на таком -то рабочем месте неработает" и негрузился пока принтер не будет готов? Помогите плиз! win 2000pro

Всего записей: 86 | Зарегистр. 06-03-2006 | Отправлено: 17:29 02-10-2006 | Исправлено: Belousov, 18:36 02-10-2006
uart78

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно с помощью батника подключать и отключать Ethernet подключение по локальной сети.
С помощью rasdial не получается.  
rasdial подходит только для подключений удаленного доступа

Всего записей: 21 | Зарегистр. 15-08-2005 | Отправлено: 17:36 02-10-2006
Den_Klimov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Спасибо огромное за помощь! Сейчас не могу, но где-то через полчаса я сяду и буду думать/смотреть.
А первую задачу можно как-то решить?

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 18:02 02-10-2006 | Исправлено: Den_Klimov, 18:03 02-10-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Den_Klimov
В 1-м - там коллизии могут быть...
 
1)
В каталоге А есть файл Test.txt
В каталоге B есть каталог Test.txt
В общем случае - в одном каталоге так называется файл, в другом - подкаталог.
 
2)
В каталоге А есть подкаталог Test (пустой)
В каталоге B есть подкаталог Test (не пустой)
В общем случае - не совпадение содержимого подкаталогов...
 
Вопрос (извечный ) - "Что делать?"
 
Добавлено:
Всё, второй вопрос снялся (прочитал разъясненния)... Да, похоже -  и первый тоже....

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 18:14 02-10-2006
uart78

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

Цитата:
а если в результате появляется 691 ошибка, уже ни как не исправить?

 
Я так понял rasdial подходит только для подключений удаленного доступа, типа диалап.
Для высокоскоростных судя по всему rasdial не подхолит .  Ты наверное , как и я хочеш использовать  именно с таким подключением?
 

Всего записей: 21 | Зарегистр. 15-08-2005 | Отправлено: 18:33 02-10-2006
Den_Klimov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Будь другом сделай, а? Буду ну ОЧЕНЬ благодарен.
Проси если чего будет надобно.
--------
PS.
К слову. Строки искомых батников Задача1 и Задача2 я планирую использоваться в одном едином батнике install.cmd, к тому же многократно дублируя (по нескольку раз испольуя одни и те же блоки команд Задача1 и Задача2 для разных каталогов) - блоки Задача1.1, Задача1.2, Задача1.3, Задача2.1, Задача2.2, Задача2.3, Задача2.4, Задача2.5. Фактически разница будет только в каталогах "a", "b", "c". Они каждый раз будут различатся от блоку к блоку. Все остальные команды блока будут одинаковы (лишь иногда я буду убирать команду резервного копирования в каталог "c").
Нельзя ли сделать так, чтобы было условие: если каталог "а" не существует или существует но без объектов (файлов и папок) указанных в задаче1 или задаче2 (объекты в задачах разные), то дальнейший блок команд задачи1 или задачи2 не выполнялся бы, а батник (install.cmd) сразу бы переходил к последующим командам и блокам команд указанных в install.cmd (если они есть)?
Дополнительно в батник install.cmd кроме этих блоков будут добавляться также и некоторые другие команды и блоки команд.
Суть в том, что я хочу сделать простой удобный инсталлятор на основе самораспаковывающихся архивов и батников.
Я давно использую самораспаковывающиеся архивы и практически уже давно решил остальные вопросы.
Ну... Не я решил а мой знакомый, который также этим занимается.
Всё упиралось в недостаточное знание - мы не могли написать нужный bat-ник. И наличие искомых блоков команд для выполнения Задача1 и Задача2 в рамках install.cmd практически полностью бы решило все остающиеся вопросы.
 
Поэтому очень тебя прошу Кирил, помоги пожалуйста и с первой задачей. Я в долгу точно не останусь!
--------
Интересно, а твой батник работает в Win2003 или только в XP? Сейчас тестить начну, но к сожалению Win2003 у меня пока нет.

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 20:10 02-10-2006 | Исправлено: Den_Klimov, 22:46 02-10-2006
kovdaev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите создать бат файл выполняющий следующее:
есть архивы rar (1.rar, 2.rar), имеется список list.txt (список содержит имена этих файлов), нужно проверить файлы на ошибку (ошибка CRC), в случае если присуствует, файл удалить, и удалить имя этого файла из списка).

Всего записей: 9 | Зарегистр. 10-10-2005 | Отправлено: 20:33 02-10-2006
Geriv



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый!
Помогите пожалуйста решить следующую задачу.
 
Есть каталог в сети, в котором куча подкаталогов.
Требуется периодически проверять все вложенные каталоги на наличие  
каких либо файлов и в случае наличия (и только наличия) хотя бы одного файла - определять владельца данного файла или файлов, с указанием полного пути к файлу.  Ранее делалось батником, который запускался шедулером, строчками типа – if exist  диск:\путь\каталог\*.* dir …. >> диск:\logs\own.dir, а сейчас под другой осью (W2K3), это уже работает некорректно.  
 
Пробовал циклом FOR /R, но тогда идет дублирование команды dir в зависимости от количества файлов в подкаталоге.
(For /R  h:\1\2 %%a In (*.*) Do dir %%~dpa >> I:\3\own.dir)
Пробовал также другие вариации с (*.*) с циклом FOR, но он срабатывает в холостую даже при отсутствии файлов, что избыточно или получается уж больно громоздкий батник.
 
Вроде простая задача, а пути не вижу.

Всего записей: 42 | Зарегистр. 19-01-2004 | Отправлено: 21:01 02-10-2006 | Исправлено: Geriv, 21:02 02-10-2006
Shish_kebab



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Посмотрел .....
nightlight
И сделал следующее
 
set T_Date1=%DATE%  
set T_Date=%T_Date1:~-11%
 
Пока работает, вырезает из даты всё что нужно, но почему 10 не вырезает непойму, ведь ХХ.ХХ.ХХХХ - это 10 символов ..... Или я чего то недогоняю?

Всего записей: 372 | Зарегистр. 14-07-2005 | Отправлено: 00:28 03-10-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Geriv
For /R  h:\1\2 %%A In (*.*) Do (echo %%~ftzaA >> I:\3\own.dir)
Но как здесь владельца определить (или как его определить через DIR) - увы, не знаю...
 
Shish_kebab
Возможно, что в Win'2000 в %DATE% последний символ - пробел???

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:23 03-10-2006
Den_Klimov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Пока твой батник у меня не работает, к сожалению. Я правда пытаюсь использовать пути с пробелами. Может в этом дело. Но как же их не использовать...
Щас попробую понять на каком этапе возникают проблемы...
Так. Когда бути без пробелов то вроде всё ОК. Уже проверил. А вот когда путь длинный с пробелами...

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 01:26 03-10-2006 | Исправлено: Den_Klimov, 01:32 03-10-2006
Kirillhome



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

Цитата:
Нельзя ли сделать так, чтобы было условие: если каталог "а" не существует или существует но без объектов (файлов и папок) указанных в задаче1 или задаче2 (объекты в задачах разные), то дальнейший блок команд задачи1 или задачи2 не выполнялся бы, а батник (install.cmd) сразу бы переходил к последующим командам и блокам команд указанных в install.cmd (если они есть)?  

 

Код:
 
set /a all_razm=0
for /r %Catalog1% %%D in (*.*.) do (set /a all_razm+=1)
if "%all_razm%"=="0" GOTO :EOF
 

Т.е. если каталог Catalog1 не существует или пустой - то "идём на выход"
 
 
Т.н. "первый" батник - возможно, сделаю завтра-послезавтра (если никто не опередит )

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:32 03-10-2006
Den_Klimov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
Спасибо огромное!
Но что всё-таки делать если пути к каталогам а также файл-спискам имеют пробелы?

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 01:35 03-10-2006 | Исправлено: Den_Klimov, 01:36 03-10-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Den_Klimov
Похоже, понимаю, о чем говоришь....
Изменял
Код:
 
Set Cat_1=E:\FOR_FTP\Flash\
Set Cat_2=D:\Temp\Den.1\
Set Cat_3=D:\Temp\Den.2\
 
на что-то другое? А на что?
 
Если на что-то такое

Код:
 
Set Cat_1=%1
Set Cat_2=%2
Set Cat_3=%3
 
,  то тогда нужен пример запуска.... (Ну, или, скорее всего "отбросить" кавычки у передаваемых параметров)

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 01:38 03-10-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