Войти

Показать полную графическую версию : [решено] Поиск файла по нескольким маскам и копирование в папку


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

Iska
16-01-2016, 01:09
и копировал найденное в папку с батником под названием find »

Как следует поступать при совпадении имён файлов в целевом каталоге?
Насколько принципиален именно пакетный файл?

miti_cmd
16-01-2016, 07:51
При совпадении имен добавлять к имени цифры. Я незнаю другого способа искать по маске и скопировать в 1 папку

megaloman
16-01-2016, 14:25
@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

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

Foreigner
16-01-2016, 17:10
miti_cmd,

Set "Out=%~dp0find"

miti_cmd
16-01-2016, 17:21
Foreigner, если вставить в код что више тогда теперь вот так http://prntscr.com/9qtoiz

miti_cmd
16-01-2016, 18:16
Полазил по форуму вот нашел код что работает очень шустро! Но как тут прописать список по маскам и чтоб не заменяло с одинаковими именами а например добавило цифру к названию файла?
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

Foreigner
16-01-2016, 18:19
miti_cmd, Значит нет папки find, создайте ее.

2>nul md "%~dp0find"
set "out=%~dp0find"

miti_cmd
16-01-2016, 20:40
Foreigner, Спасибо все работает!




© OSzone.net 2001-2012