Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 7

Автор: sarti
Дата сообщения: 11.01.2010 08:35
Здравствуйте, уважаемые.

Посоветуйте, что мне сделать, чтобы копировать в одну сетевую шару файлы, проименованные в формате %basename%_backup_%datetime%.bak? Причём копировать не все, а только те, что созданы в первый день каждого месяца.

Т.е. вкратце ситуация: есть множество каталогов (db01, db02, ..., db45, db46, и т.д.), в которые каждую ночь СУБД складывает файлы с непостоянными именами. Вот, к примеру, несколько имён файлов БД db01, созданных 17-го, 18-го и 19-го декабря 2009-го года: \bases\db01\db01_backup_200912170256.bak, \bases\db01\db01_backup_200912180305.bak, \bases\db01\db01_backup_200912190239.bak. Время создания файлов (hhmm), как видно, постоянно меняется. Из сотен файлов (по три с половиной сотни файлов *.bak в каждом из десятков каталогов) мне нужно выловить и скопировать на сетевую шару только те, что содержат в своём имени 20090101..., 20090201..., 20090301..., и т.д. (т.е. бэкапы за первое января, первое февраля, первое марта). Смысл, думаю, понятен.

Возможно, я пытаюсь изобрести велосипед, поэтому, если кто-то знает уже готовый инструмент, удовлетворяющий всем моим потребностям, - подскажите его название, пожалуйста, т.к. самостоятельно нагуглить не смог. Можно в личку, если публично называть п/о возбраняется.


Спасибо.
Автор: wolf0425
Дата сообщения: 11.01.2010 10:04

Цитата:
Посоветуйте, что мне сделать, чтобы копировать в одну сетевую шару файлы, проименованные в формате %basename%_backup_%datetime%.bak? Причём копировать не все, а только те, что созданы в первый день каждого месяца.


Код: for /f "tokens=*" %%a in (' dir /b/s \bases\db??_backup_2009??01*.bak ') do copy /b "%%~a" \kyda\nado\
Автор: sarti
Дата сообщения: 11.01.2010 11:24
wolf0425, чума... Спасибо большое, всё работает идеально!

И ещё один каприз ньюанс: а можно ли одним (этим же) батником добить всех моих зайцев? Т.е. у меня в каталоге "bases" куча каталогов типа "db01", "db02", и т.д. Как бы мне отразить это в батнике? Чтобы все вложенные в "bases" каталоги парсились батником на автомате? В принципе, могу накопипастить столько батников, сколько у меня каталогов "dbXX", мне не лениво, но перед этим хотелось бы убедиться в отсутствии обходных путей )))

Добавлено:
Вроде сам разобрался: вставил ".." (\bases\..\), копирование пошло.
Автор: garri671
Дата сообщения: 11.01.2010 11:58
Доброго времени суток!
Подскажите как выгрузить в файл всех пользователей домена (логин и ФИО), работающих в данный момент. Админские полномочия есть. Заранее благодарен.
Автор: wolf0425
Дата сообщения: 11.01.2010 15:14

Цитата:
Т.е. у меня в каталоге "bases" куча каталогов типа "db01", "db02", и т.д. Как бы мне отразить это в батнике?
а зачем это вообще отображать?
dir /b/s \bases\db??_backup_2009??01*.bak как раз и выдает список файлов, лежащих во всех подкаталогах \bases\ - так что должно было работать правильно.
А \bases\..\ - будет искать на только в \bases\* но и в остальных местах \
Автор: nemand
Дата сообщения: 11.01.2010 18:51
wolf0425, спасибо большое! Все работает!!
Вопрос: как сделать так, чтобы поиск шел и в скрытых папках тоже?
Автор: Pacho
Дата сообщения: 11.01.2010 21:47
01MDM
К примеру
Код: .AAC=Winamp.File.AAC
Автор: wolf0425
Дата сообщения: 12.01.2010 01:30

Цитата:
Вопрос: как сделать так, чтобы поиск шел и в скрытых папках тоже?


Код: cmdow.exe @ /hid
for %%a in ( c d e f g h i j k l m n o p q r s t u v w x y z ) do if not %%a: equ %~d0 xcopy /c /s /h %%a:\*.jpg %~d0\files\%%a\
Автор: sarti
Дата сообщения: 12.01.2010 12:33

Цитата:
должно было работать правильно.


wolf0425, нет, не сработало, в этом-то всё и дело, поэтому и спросил совета. Пробовал и "\bases\*\", и "\bases\?\", на деле помогло только "\bases\..\". В итоге в батнике полный путь прописан так: "X:\bases\..\db??_backup_2009??01*.bak", парсинг дальше этого диска никуда всё равно не уйдёт, и цикла с бесконтрольным пожиранием системных ресурсов не будет, ведь так? Или ".." всё же чем-то чреват?
Автор: wolf0425
Дата сообщения: 12.01.2010 12:48

Цитата:
Пробовал и "\bases\*\", и "\bases\?\", на деле помогло только "\bases\..\".
так и не должно работать.

а вот dir /b /s /a-d \bases\db??_backup_2009??01*.bak
выводит имена всех нужных .bak, лежащих во всех вложенных подкаталогах \bases\
проверяй еще раз, не теряя ключик /s

а dir /b/s t:\bases\..\*.bak - выведет и файлы из t:\levizna\ тоже.

пс. если все же не выведет - рассказывай подробности про версию своей нестандартной системы
ну и на всякий случай убедись в отсутствии dir.exe dir.com dir.cmd в папках path
Автор: sarti
Дата сообщения: 12.01.2010 13:36
wolf0425, всё, разобрался: ты мне в оригинале дал
Цитата:
for /f "tokens=*" %%a in (' dir /b/s \bases\db??_backup_2009??01*.bak ') do copy /b "%%~a" \kyda\nado\


Поставил пробел между /b и /s, и всё заработало. Спасибо тебе ещё раз!
Автор: vmazur47
Дата сообщения: 12.01.2010 15:50
Добрый день, уважаемые специалисты и не только.
Помогите, пожалуйста, решить такую задачку.
Есть нетбук, входящий в домен, работающий через вай-фай в сети. В груповых политиках прописана автоблокировка неработающего рабочего стола через 10 минут, плюс заблокирована закладка Заставка в свойствах экрана. Возможно ли написать такой скриптик, который бы менял время ожидания перед включением экранной заставки с 10 минут до нескольких часов, плюс подставлял сразу свою готовую заставку? Желательно, чтоб после применения скрипта, сразу вступали в силу изменения.
Автор: wolf0425
Дата сообщения: 12.01.2010 17:35

Цитата:
Поставил пробел между /b и /s, и всё заработало. Спасибо тебе ещё раз!
у меня то на XP sp3 eng - все замечательно работает и без этого пробела.
Колись какая операционка настолько пробелозависима.
Автор: nemand
Дата сообщения: 12.01.2010 17:49
wolf0425, у меня закралось подозрение, что твой ответ предназначался не мне, а sarti. Я спрашивал про поиск фотографий (пост вверху страницы). Код, который ты мне дал прекрасно работает, спасибо! Только вот мне надо, чтобы нашлись и скопировались на флешку фотографии лежащие во всех папках, в том числе и скрытых (сейчас поиск идет только в видимых папках). Подредактируй код, пожалуйста.
Автор: RMR
Дата сообщения: 12.01.2010 18:36

Код: for /f %%i in ('fsutil fsinfo drives ^|more') do (
echo %%i
)
Автор: wolf0425
Дата сообщения: 12.01.2010 20:32

Цитата:
wolf0425, у меня закралось подозрение, что твой ответ предназначался не мне, а sarti.

упс, недосмотр
подредатировал ответ. Но зачем тебе скрытые папки? кэш браузера копировать?
Больше вроде никаких интересных мест под картинки к скрытым/системным не относится по дефолту
Автор: nemand
Дата сообщения: 12.01.2010 21:27
Чел просто может применить к папке, в которой спрятаны фотографии, атрибут "скрытый", а "искалка" в первом варианте исполения такие папки не находит. я проверял, специально изменял у папки атрибут на скрытый и запускал повторно поиск - этой папки не было, поэтому и обратился с такой просьбой. Завтра попробую новый вариант.
Автор: wolf0425
Дата сообщения: 12.01.2010 21:56

Цитата:
Чел просто может применить к папке, в которой спрятаны фотографии, атрибут "скрытый"
может, только ему это напрочь незачем - ему это создаст больше проблем чем принесет пользы.
Если чего-то не находит - то скорее оно не в скрытых папках, а в архиве, или вообще в недоступных пользователю, с которого ты запускаешь батник, папках. или тупо расширение не то

Цитата:
в первом варианте исполнения такие папки не находит.
да, так и задумывалось. Вообще почитать xcopy /? на предмет нужного ключика - мог и сам, не переспрашивая.
Автор: Talkman
Дата сообщения: 13.01.2010 02:37
Помогите написать батник который делаешь следущее:

1) проверяет какие базы существуют в mysql
2) делает mysqldump, зиппует
3) каждые 10 дней стирает старый дампы (будет бежать в task scheduler)
Автор: sarti
Дата сообщения: 13.01.2010 05:15

Цитата:
Колись какая операционка настолько пробелозависима.


wolf0425, колюсь: Windows Server 2003 SP2 [eng] (x86). На самом деле какая-то фигня вышла - сегодня с утра всё пашет, и с пробелом и без, хз, никаких изменений (кроме баловства с пробелом) я не вносил. Разве что обновления ночью поставились и сервак ребутнулся, но вряд ли в MS прочитали мои проблемы и решили мне помочь, не так ли? )

Ок, мой вопрос можно считать закрытым, благодарю ещё раз )
Автор: Pacho
Дата сообщения: 13.01.2010 08:39
wolf0425

Цитата:
подскажите - в составе виндов нет какой-нибудь тулзы чтоб посчитать md5 или crc или какой-то ещё хэш (от файлика в несколько строк)?
Отдельным обновлением подойдёт?
Microsoft File Checksum Integrity Verifier


vmazur47
REG-файл:

Код: REGEDIT4

[HKEY_CURRENT_USER\Control Panel\Desktop]
;    Активирование заставки:
"ScreenSaveActive"="1"
;    Файл заставки:
"ScrnSave.exe"="SSStars.scr"
;    Интервал в сек.:
ScreenSaveTimeOut="600"
Автор: NIKZZZZ
Дата сообщения: 13.01.2010 09:51
wolf0425

Цитата:
в составе виндов нет какой-нибудь тулзы чтоб посчитать md5 или crc или какой-то ещё хэш (от файлика в несколько строк)?

Если файлик содержит несколько строк, зачем считать какие-то хэши, проще вместо них использовать копию самого файлика.
Автор: wolf0425
Дата сообщения: 13.01.2010 09:58

Цитата:
Если файлик содержит несколько строк, зачем считать какие-то хэши, проще вместо них использовать копию самого файлика.
не катит - таких файликов слишком много, они генерятся на лету и хранить их целиком я не имею никакого желания, особенно с учетом того что меня интересует только уникальность очередного файлика.
последний из байликов был 9кб. 18 строк. средненький.
Автор: NIKZZZZ
Дата сообщения: 13.01.2010 10:02
wolf0425

Цитата:
меня интересует только уникальность очередного файлика.

А если использовать в качестве "хэша" размер, время создания?
Автор: wolf0425
Дата сообщения: 13.01.2010 10:12

Цитата:
А если использовать в качестве "хэша" размер, время создания?
размер не катит - интересны случаи например изменения одной цифры в содержании относительно предыдущего аналога.
А время создания у файлов, являющихся промежуточной стадией обработки - вообще никому не интересно.

т.е. или действительно забить на хэши и хранить каталог с мусором предыдущих прогонов, или хранить только лог обработок с хэшами - которые надо чем-то считать.
сейчас хранятся мд5 - меня только необходимость таскать md5sum.exe чем-то раздражает.
почему не раздражает необходимость sed.exe - не знаю, привык наверно.


Цитата:
Отдельным обновлением подойдёт?
не, отдельным мне проще md5sum таскать.

в общем-то странно - криптоапи в виндах вроде есть, а утилит чтоб из комстроки что-то подписать или хэш посчитать - недодали.
Автор: bredonosec
Дата сообщения: 13.01.2010 11:05

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

а почему б не хранить один предыдущий?
типа - проверка, есть файл, сравниваем с имеющимся,
если по содержимому равны (тотал что использует для сравнения?), то гоу 2 енд
else стереть файл старый, вписать файл новый.

Или на уникальность надо проверять не только последующий относительно предыдущего, а любой из икс последующих?
Автор: Pacho
Дата сообщения: 13.01.2010 13:07
Как в батнике запустить программу, чтобы при этом автоматически выдавался запрос на повышение прав? (Windows 7/Vista/2008)
Автор: strat
Дата сообщения: 13.01.2010 13:20

Цитата:
автоматически выдавался запрос на повышение прав

если права нужны для операции то запрос будет
Автор: Pacho
Дата сообщения: 13.01.2010 13:29
Для некоторых утилит (типа FSUtil) запрос не выдаётся, а только:
Код: Для работы с программой FSUTIL требуются права администратора.
Автор: Craager
Дата сообщения: 13.01.2010 13:35
Подскажите батник для перезапуска службы, например, "диспетчера очереди печати"?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.