1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
1 | |
Копирование файлов по маске из подкаталогов10.03.2020, 16:58. Показов 22997. Ответов 27
Доброго времени! Столкнулся с такой дилеммой: нужен батник который будет копировать все файлы с определённым расширением *.xls из подкаталогов определённой папки. Самое важное что конкретного пути нет и уровень подкаталогов не известен. В общем, нужен скрипт который будет шерстить по всем подкаталогам папки, искать файлы формата XLS и копировать их в одну папку. Я знаю что в команде del можно указать путь со звёздочкой (del /q \\dbs\bases\*\*.xls) и будут удаляться определённые файлы со всех подкаталогов какие имеются, пробовал такое в copy, xcopy, robocopy - не катит((((
0
|
10.03.2020, 16:58 | |
Ответы с готовыми решениями:
27
Поиск файлов по определённой маске в указанной папке без учёта содержимого её подкаталогов CMD Копирование файлов всех подкаталогов Копирование файлов с определенным расширением со всех подкаталогов определенной папки Копирование файлов Excel из всех подкаталогов определенной папки в отдельную папку |
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
10.03.2020, 19:15 | 2 |
не верится, особенно после
(кое-какого ключа не хватает)
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
|||||||||||
11.03.2020, 11:46 | 3 | ||||||||||
Добрый день! Код:
На случай, если среди файлов .xls окажутся файлы .xlsx:
0
|
1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
11.03.2020, 13:01 [ТС] | 4 |
Большое спасибо! Работает! Но есть ещё один момент
"Полный путь до папки, из которой файлы должны быть скопированы" должен выглядеть так: D:\2020_%mes%\T*0%per%, потому что в основном каталоге находятся подкаталоги Т01Р01, Т02Р01 ... Т17Р01 и Т01Р02, Т02Р02 ... Т17Р02, и нужно выбирать с каким окончанием папку выбирать, либо Р01 либо Р02. В Общем по маске T*0%per%, где %per% - 1 или 2. Я так попробовал, не получается. Нельзя задавать * в названии папок
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
|
11.03.2020, 13:11 | 5 |
На здоровье. Давайте ещё раз получим понимание того, что Вы хотите. Есть каталог, в котором есть некое множество подкаталогов, из которых, в свою очередь, необходимо скопировать файлы .xls в определённый каталог. Правильно?
Итак, Как Вы хотите выбирать? Можно реализовать это с помощью диалога с пользователем либо сами руками в сценарии каждый раз менять будете. P.S. Я правильно понимаю, что Вы хотите осуществлять поиск и копирование файлов из определённых подкаталогов, а не всех?
0
|
1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
11.03.2020, 13:45 [ТС] | 6 |
Хочу через диалог по средствам set /P или через условие задать переменную %per% , и указать её в маску подкаталогов (Т*Р0%per%). Поиск осуществлять в множестве папок по пути D:\2020_%mes%\Т*Р0%per% - в котором так же есть подкаталоги, но их имя не имеет значение, вот от туго и надо вытянуть *.xls.
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
|
11.03.2020, 13:59 | 7 |
%mes% - это часть имени каталога или раскрытие переменной?
Добавлено через 3 минуты Тут тоже хотелось бы получить понимание. Что должно быть вместо звёздочки? Это должна быть константа или переменная?
0
|
1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
11.03.2020, 14:35 [ТС] | 8 |
1) %mes% - это переменная которая задаётся в диалоге
2) Т*P0%per% - это маска названия каталога, где звёздочка это любое значение, может быть 01, 02, 03 и т.д., и их может быть много, и необязательно эти цифры, для этого * и ставиться что бы скрипт выбирал все каталоги с ключевыми символами Т Р0 и переменной %per%, а то что между Т и Р может быть что угодно. С файлами это работает идеально, а с папками напряг. Добавлено через 1 минуту Да, часть имени каталога, переменная которая задаётся пользователем
0
|
1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
11.03.2020, 15:23 [ТС] | 10 |
Не подходит. Главное условие это работа с подкаталогами по маске. Выше я объяснял ситуацию.
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
||||||||||||||||
11.03.2020, 16:17 | 11 | |||||||||||||||
Добавлено через 17 минут Заметил ошибку. Исправленный вариант:
1
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
||||||
11.03.2020, 16:43 | 13 | |||||
И финальный штрих:
Не забываем во второй строчке кода изменить мой путь на свой
1
|
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
|
||||||
11.03.2020, 18:23 | 14 | |||||
1
|
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
11.03.2020, 19:48 | 15 | |||||
1
|
1 / 1 / 0
Регистрация: 07.02.2017
Сообщений: 14
|
|
12.03.2020, 16:39 [ТС] | 16 |
ОШИБКА: Файлы типа "Т*Р01" не найдены.
Добавлено через 26 минут Короче, решил проблему примитивно, но надёжно! Использовал данный скрипт и повторил циклы столько раз, сколько нужно подпапок Т*Р0%per% Теперь появился ещё один вопрос, не знаю, возможно нужно новую тему создавать, а быть может кто и тут ответит... Как в этот цикл добавить ещё один, что бы переименовывал фалы с одинаковым именем, если такие попадаются, тоесть добавлял +1. Не знаю в какую часть его закинуть.
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
|
12.03.2020, 17:15 | 17 |
0
|
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
12.03.2020, 19:25 | 18 |
Следите за путями в коде
или же у вас маска не такая как указываете потому что факты говорят обратное:
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
|
13.03.2020, 00:47 | 19 |
А если этих одинаковых файлов более одного? Каков алгоритм переименования? Допустим, "имя файла+1.xls" - первое совпадение. Как быть со вторым и последующими? Создавать "имя файла+2.xls" и т.д. или "имя файла+1+1.xls"?
0
|
3049 / 1056 / 475
Регистрация: 29.05.2016
Сообщений: 4,441
|
||||||
13.03.2020, 10:40 | 20 | |||||
Глупо было с моей стороны. Как я вижу:
Добавлено через 7 минут По итогу в случае совпадения имён файлов должны получить следующее. Например, есть файл test.xls. В случае первого совпадения данный файл будет скопирован как test+1.xls, в случае второго совпадения как test+2.xls и т.д. Файл с другим именем, например, log.xls в случае первого совпадения будет скопирован как log+1.xls и т.д. Добавлено через 3 минуты Единственный момент, который я не смог реализовать - это задание поиска переменной в конце строки (33 строка кода). Использование ключа /E приводит к тому, что результат поиска всегда пустой, несмотря на то, что заданная для поиска строка имеется в выводе. В чём может быть проблема?
0
|
13.03.2020, 10:40 | |
13.03.2020, 10:40 | |
Помогаю со студенческими работами здесь
20
Копирование файлов в папки по маске файла и маске папки Копирование файлов с определённым расширением из всех подкаталогов и запись их имён в текстовый файл Копирование всех файлов и подкаталогов, созданных на предыдущем месяце. Как это сделать? Копирование каталога с сетевого диска в каталог на локальном диске с заменой всех подкаталогов и файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |