Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
1

Найти папку по маске и заархивировать её

27.11.2014, 12:23. Просмотров 1292. Ответов 10
Метки нет (Все метки)

Всем привет!

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

В корневой директории есть папки:
Bash
1
2
3
склад
остаток
урал1
Но раз месяц меняется имя папки урал - будет урал2, потом урал3 или урал56435 (любые другие цифры).

Задача: заархивировать именно папку с именем "урал" в имени.

Я бился и бился .. ну никак не могу сделать чтобы выбирал архиватор именно папку по маске *урал*

Т.е. я понимаю логику - нужно сделать список файлов в корневой папке с путями!!!! с маской "урал" и скормить её архиватору rar.

Cписок папок с маской "урал" я сделал командой:
Bash
1
2
@echo on
dir j:\*урал* /b /ad > j:\base.txt
получаю одно название в файлике base.txt:
Bash
1
урал1
(т.е. он в корневой нашёл все папки и вывел только нужную мне по маске)

Но архиватору то нужно полный путь указать к ней!! А у DIR нет команды вывести путь папки!

мне надо чтобы в base.txt был ответ:
Bash
1
j:/work/урал1
ПОмогите пожалуйста!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2014, 12:23
Ответы с готовыми решениями:

Заархивировать 7z по отдельности из папки в папку
Нужно каждый pdf файл из папки C:\PDFfiles заархивировать с помощью 7z в папку...

Как заархивировать каждую папку в отдельный архив?
Здравствуйте, суть такова, нужно архивировать Нное количество папок, на...

Как заархивировать папку в архив с именем данной папки?
Нужно что бы имя архива содержало имя архивируемой папки. Есть ресурс на...

Заархивировать файл, придать ему имя с датой и переместил в нужно папку
Уважаемые товарищи, необходима Ваша помощь. Нужно, чтобы bat файл заархивировал...

Скопировать папку на другой диск и заархивировать под текущей датой и временем
Есть папка с огромным количеством подпапок и файлов. весит примерно 400ГБ....

10
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
27.11.2014, 12:49 2
Bash
1
@dir /ad/b/s "J:\урал*">"J:\base.txt"
1
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
27.11.2014, 13:06  [ТС] 3
Урааа!
Это работает!
Спасибо!

А можно уточню немного:

Исходно пути такие:
Bash
1
2
3
4
5
D:\BASE\Урал 2014-11-15
D:\BASE\склад
D:\BASE\остаток
D:\BASE\КОПИИ\Урал 2014-10-18
D:\BASE\КОПИИ\Урал 2014-11-13
МОжно както поправить команду чтобы она искала "урал*" только в текущей папке BASE а не лезла в подпапку КОПИИ?
Иначе после батника получается:
Bash
1
2
3
D:\BASE\Урал 2014-11-15
D:\BASE\КОПИИ\Урал 2014-10-18
D:\BASE\КОПИИ\Урал 2014-11-13
а хочется вот такую красоту:
Bash
1
D:\BASE\Урал 2014-11-15
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
27.11.2014, 14:01 4
Bash
1
2
3
4
5
@echo off
chcp 1251>nul
echo КОПИИ>.tmp
dir /ad/b/s "J:\урал*"| findstr /vg:.tmp>"J:\base.txt"
del .tmp

В кодировке DOS-866 не сохранять!
1
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
28.11.2014, 08:07  [ТС] 5
ComSpec, ещё раз спасибо! Скрипт отрабатывает как нужно!

Остался самый распоследний момент:
последняя строчка моего скрипта для архивации:
Bash
1
rar.exe a -ilogj:\errors.txt J:\1CbaseUZ.rar "d:\BASE\Склад" @J:\base.txt
Он собственно добавляет папку "Склад" (отрабатывает правильно), а вот второую папку из нашего сформированного файлика base.txt с ошибкой:
Bash
1
2
10:57:17  Невозможно открыть d:\BASE\LЁры 2014-11-15
10:57:17  Не удается найти указанный файл.
Т.е. в батнике русское имя папки "Склад" подхватывается на ура, а вот с файлика сформированного по поиску base.txt - нет
Кодировку не понимает. Это поправимо?
0
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
28.11.2014, 09:28 6
Цитата Сообщение от fanatf1 Посмотреть сообщение
Т.е. в батнике русское имя папки "Склад" подхватывается на ура, а вот с файлика сформированного по поиску base.txt - нет
Кодировку не понимает. Это поправимо?
У Вас содержимое батника сохранено в 866 кодировке, поэтому скрипт "понимает" кириллицу. Содержимое текстового файла base.txt сохранено в 1251 кодировке. Исправьте кодировку текста файла с 1251 на 866 или сохраните сам файл в 866 кодировке.
0
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
28.11.2014, 09:42  [ТС] 7
sov44, это понятно, но проблема в том что файл base.txt создаётся автоматически нашим скриптом:
Цитата Сообщение от ComSpec Посмотреть сообщение
Bash
1
2
3
4
5
@echo off
chcp 1251>nul
echo КОПИИ>.tmp
dir /ad/b/s "J:\урал*"| findstr /vg:.tmp>"J:\base.txt"
del .tmp
Можно както задать кодировку создаваемого файла base.txt в этом скрипте?
0
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
28.11.2014, 10:29 8
Цитата Сообщение от fanatf1 Посмотреть сообщение
файл base.txt создаётся автоматически
В таком случае прогоните выходной файл через win_iconv http://www.cyberforum.ru/post4854353.html
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
28.11.2014, 12:09 9
Лучший ответ Сообщение было отмечено fanatf1 как решение

Решение

fanatf1, поскольку Вам нужно создавать файл "base.txt" в кодировке DOS-866, надо убрать строку "chcp 1251>nul" и сохранить пакетный файл также в кодировке DOS-866:

Bash
1
2
3
4
@echo off
echo КОПИИ>.tmp
dir /ad/b/s "J:\урал*"| findstr /vg:.tmp>"J:\base.txt"
del .tmp
.
2
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
28.11.2014, 13:36  [ТС] 10
Всё заработало на 100%!

Спасибо ComSpec, sov44, за оперативные и исчерпывающие ответы!
0
fanatf1
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 6
22.12.2016, 11:35  [ТС] 11
Ребята! Нужна опять помощь!

Код из последнего сообщения два года работал отлично.
Bash
1
2
3
4
@echo off
echo КОПИИ>.tmp
dir /ad/b/s "J:\урал*"| findstr /vg:.tmp>"J:\base.txt"
del .tmp
Но тут он сломался В создаваемом файле base.txt поломась кодировка. Он правильно как всегда находит папку со словом "урал" но сохраняется файл с кряказябрами.

J:\“а*«‡*Їз*бвм 2015-05-26

А два года всё работало отлично и ответ был и должен быть

J:\УралЗапчасть 2015-05-26

Соотвественно дальше Winrar не может из него прочитать эту строку и стопорится.

Непонимаю как он сломался или сотрудники тут без меня химичили с блокнотом может. В Блокноте поставил стандартный шрифт TNR и кодировка Крилилистическая .... но это не помогло. Проверил что батник сохранён в OEM-866 в Akepad но не помогло

Подскажите как починить?

Добавлено через 2 часа 48 минут
Т.е. приведённый сам батник работает правильно, и слова русские ищет, находит , а в выводном файле base.txt - кодировка побилась. (работала 2 года, я сам ничего не делал, винду не обновляли, возможно ковырялись в настройкаах Блокнота, хз)
0
22.12.2016, 11:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2016, 11:35

Поиск на всём компьютере файлов по заданной маске и перемещение найденных в определённую папку
Всем доброго времени суток, стоит такая задача - по маске на компьютере найти...

В заданном каталоге найти и заархивировать все exe-файлы, имена которых начинаются на определённую строку
Всем привет. Сори может подобный вопрос часто обсуждался, но я чтот не нашел...

Найти по маске все файлы и пройтись фором
написать скрипты, позволяющие переименовать все файлы, имена которых совпадают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru