Показать полную графическую версию : [решено] Поиск файла по нескольким маскам и копирование в папку
miti_cmd
15-01-2016, 22:37
Привет ребята. Шарюсь по форуму нигде нет нужного батника.
Кароч нужно чтоб батник искал файлы на всех дисках по нескольким маскам и копировал найденное в папку с батником под названием find
Лучше чтоб список масок можно легко редактирвоать в том же батнике
пример масок:
foto*.jpg
DCIM*.jpg
fotki_*.jpg
DCIM_*.jpg
DCIM-*.jpg
и копировал найденное в папку с батником под названием 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.