Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск файла по нескольким маскам и копирование в папку (http://forum.oszone.net/showthread.php?t=310433)

miti_cmd 15-01-2016 22:37 2595560

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

Iska 16-01-2016 01:09 2595594

Цитата:

Цитата miti_cmd
и копировал найденное в папку с батником под названием find »

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

miti_cmd 16-01-2016 07:51 2595640

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

megaloman 16-01-2016 14:25 2595723

Код:

@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 2595788

megaloman, да работает, но одна мелочь папка создается на диске Е
Код:

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

Foreigner 16-01-2016 17:10 2595808

miti_cmd,
Код:

Set "Out=%~dp0find"

miti_cmd 16-01-2016 17:21 2595815

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

miti_cmd 16-01-2016 18:16 2595851

Полазил по форуму вот нашел код что работает очень шустро! Но как тут прописать список по маскам и чтоб не заменяло с одинаковими именами а например добавило цифру к названию файла?
Код:

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 2595854

miti_cmd, Значит нет папки find, создайте ее.
Код:

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


miti_cmd 16-01-2016 20:40 2595900

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


Время: 21:49.

Время: 21:49.
© OSzone.net 2001-