Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск файла по нескольким маскам и копирование в папку

Ответить
Настройки темы
CMD/BAT - [решено] Поиск файла по нескольким маскам и копирование в папку

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет ребята. Шарюсь по форуму нигде нет нужного батника.
Кароч нужно чтоб батник искал файлы на всех дисках по нескольким маскам и копировал найденное в папку с батником под названием find
Лучше чтоб список масок можно легко редактирвоать в том же батнике
пример масок:
foto*.jpg
DCIM*.jpg
fotki_*.jpg
DCIM_*.jpg
DCIM-*.jpg

Отправлено: 22:37, 15-01-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата miti_cmd:
и копировал найденное в папку с батником под названием find »
  1. Как следует поступать при совпадении имён файлов в целевом каталоге?
  2. Насколько принципиален именно пакетный файл?
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:09, 16-01-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


При совпадении имен добавлять к имени цифры. Я незнаю другого способа искать по маске и скопировать в 1 папку

Отправлено: 07:51, 16-01-2016 | #3


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo off
cls

Set "Disks=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" 
Set "Masks=foto*.jpg DCIM*.jpg fotki_*.jpg DCIM_*.jpg DCIM-*.jpg"
Set "Out=E:\find"
Set /A Max=100000

rem Set "Disks=D E" 

FOR %%D IN (%Disks%) DO (
   If Exist %%D:\ (
      CD /D %%D:\
      FOR /R %%F IN (%Masks%) DO Call :MultCopy "%%F" "%Out%\" 
   )
)
GoTo :Eof

:MultCopy
If /I "%~dp1"=="%~dp2" GoTo :Eof
rem Echo %1

Set "Count="
Set /A I=%Max%

:Begin
Set /A I+=1
If Exist "%~2%~n1%Count%%~x1" (
	Set "Count=_%I:~1,100%"
	GoTo :Begin
)

Copy %1 "%~2%~n1%Count%%~x1" >nul

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 16-01-2016 в 16:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:25, 16-01-2016 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, да работает, но одна мелочь папка создается на диске Е
Код: Выделить весь код
Set "Out=E:\find"
Как сделать чтоб создалась папка именно там откуда запускается бат-файл?

Отправлено: 16:39, 16-01-2016 | #5


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


miti_cmd,
Код: Выделить весь код
Set "Out=%~dp0find"

Отправлено: 17:10, 16-01-2016 | #6


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, если вставить в код что више тогда теперь вот так http://prntscr.com/9qtoiz

Отправлено: 17:21, 16-01-2016 | #7


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Полазил по форуму вот нашел код что работает очень шустро! Но как тут прописать список по маскам и чтоб не заменяло с одинаковими именами а например добавило цифру к названию файла?
Код: Выделить весь код
set t=123.txt
set c=C:\txt
dir /b /s a:\>%t%
dir /b /s b:\>>%t%
dir /b /s c:\>>%t%
dir /b /s d:\>>%t%
dir /b /s e:\>>%t%
dir /b /s f:\>>%t%
dir /b /s g:\>>%t%
rem ................
dir /b /s y:\>>%t%
dir /b /s z:\>>%t%
md %c%\
del /F /Q "%c%\*.*" 2>nul
For /F "Delims=" %%I in ('^<"%t%" find /i "DCIM_*.jpg"') do copy "%%I" "%c%\"
del /F /Q "%t%" 2>nul

Отправлено: 18:16, 16-01-2016 | #8


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


miti_cmd, Значит нет папки find, создайте ее.
Код: Выделить весь код
2>nul md "%~dp0find"
set "out=%~dp0find"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:19, 16-01-2016 | #9


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, Спасибо все работает!

Отправлено: 20:40, 16-01-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск файла по нескольким маскам и копирование в папку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск фалов по содержимому и копирование найденных файлов в папку Randow Скриптовые языки администрирования Windows 6 05-05-2015 22:31
Поиск и замена по нескольким ключевым словам одновременно OsNewbie Вебмастеру 1 02-03-2013 13:50
CMD/BAT - [решено] Поиск папки и Копирование файла в данную папку из известного места dark-------13 Скриптовые языки администрирования Windows 4 20-04-2011 11:48
CMD/BAT - [решено] Копирование папок и файлов по маскам dorosa Скриптовые языки администрирования Windows 10 28-01-2011 14:18
Установщик обновлений, поиск файлов по двум маскам Lubitel Softa AutoIt 6 03-10-2010 03:35




 
Переход