Компьютерный форум 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=214001)

Jans 24-08-2011 22:49 1738773

Поиск и копирование найденных файлов
 
Задача следующая: нужен батник,который будет искать и копировать найденный файлы скажем в папку C:\111\
т.е если ищем все файлы *.jpg ,чтобы все копировал в заданную директорию!
Помогите разобраться,знаю,было пару подобных тем,но до нужного мне кода пока не дорос!заранее спасибо!

Iska 24-08-2011 23:51 1738816

Jans, для тех, кто восхочет реализовывать сие, ответьте сразу на два банальных вопроса: где именно искать (на заданном диске, на всех дисках, на несъёмных дисках, в заданном каталоге и его подкаталогах) и как поступать с одноимёнными найденными файлами?

Jans 25-08-2011 00:13 1738826

Iska, на всех дисках,всех каталогах и подкаталогах!
одноимённые файлы тож копировать,но добавлять в имени (1), (2)..ну как стандартно в винде!
благодарствую за вопрос!

Iska 25-08-2011 00:36 1738838

Цитата:

Цитата Jans
благодарствую за вопрос! »

Не за что. Вам осталось только подождать, пока кто-нибудь не восхочет…

2ooth 31-08-2011 01:53 1742949

Код:

set t=123.txt
set c=C:\111
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 ".jpg"') do copy "%%I" "%c%\"
del /F /Q "%t%" 2>nul


El Sanchez 31-08-2011 18:30 1743433

Jans,
Код:

@Echo Off
Rem Путь задать БЕЗ слэша на конце
Set Output=C:\111

If Not Exist %Output% Exit /B 1
PushD %Output%&&RD . /S /Q 2>nul&PopD
For /F "Skip=1" %%A In ('WMIC LOGICALDISK WHERE "FileSystem!=NULL" GET Name') Do Call :_func "%%A\"
GoTo :EoF

:_func
For /R "%~1" %%A in (*.jpg) Do (
        If /i Not "%%~dpA"=="%Output%\" If Exist "%Output%\%%~nxA" (
                For /F "Tokens=1* Delims=:" %%C in ('Dir /B /A-D "%Output%\%%~nA(*).jpg" "%%A" 2^>nul^|FindStr /in .') Do If Not Exist "%Output%\%%~nA(%%C)%%~xA" Echo Copy "%%A" to "%Output%\%%~nA(%%C)%%~xA"&Copy /Y "%%A" "%Output%\%%~nA(%%C)%%~xA" >nul
        ) Else (
                Echo Copy "%%A" to "%Output%\%%~nxA"&Copy /Y "%%A" "%Output%\%%~nxA" >nul
        )
)


Jans 11-09-2011 14:51 1750769

Спасибо,товарищи,всем, кто помог ;) Большой респект и уважуха! :clapping: :clapping: :clapping: :clapping: :clapping:
код 2ooth помог хорошо,спасибо!El Sanchez,по-ходу цикл бесконечный - один и тот же файл по несколько десятков раз скопировало,и на ХР не пашет :( но всё равно спасибо ;)
подскажите пожалуйста, как вот этот батник заставить,чтоб он с так же искал не файлы,а папку, скажем "эксперимент" и всё ие содержимое включая подпапки копировал в C:\111 :search:

set t=123.txt
set c=C:\111
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 ".jpg"') do copy "%%I" "%c%\"
del /F /Q "%t%" 2>nul

El Sanchez 11-09-2011 17:34 1750867

Цитата:

Цитата Jans
по-ходу цикл бесконечный - один и тот же файл по несколько десятков раз скопировало,и на ХР не пашет »

Jans, значит одинаковых файлов много в системе, я не маньяк, чтобы на jpg-файлах тренироваться, создал несколько файлов на разных дисках с несуществующем расширением (например, .333) и натравил батник. На XP/7 работает. Батник пишет в консоль откуда копирует и куда под каким именем. Неужто несколько десятков строк с одинаковыми путями присутствуют? Кстати, не забывайте перед повторным запуском батника очищать конечную директорию, а то дублей станет в 2 раза больше.

UPD: Jans, прошу прощения, после последней правки работа на XP отвалилась. Пост со скриптом исправил.

NLOLegion 28-02-2016 06:34 2611020

А если всё найденное нужно направить не в папку на конкретном диске С , а в папку 111 на диске с которого осуществлялся запуск по поиску? Флешка может отобразиться любым буквенным значением в зависимости от уже подключенных.

Iska 28-02-2016 07:26 2611025

NLOLegion, компромат планируете собирать :)?

NLOLegion 28-02-2016 11:51 2611073

Не обязотельно.)

Iska 28-02-2016 12:00 2611078

Можете привести какой-либо пример из необязательного?

NLOLegion 29-02-2016 18:22 2611513

Использовать буду в системе голосового управления изменив под свои нужды, но и для добычи нужных фалов тоже можно использовать. но форум думаю не для выяснения подобных нюансов и троллинга.

Iska 29-02-2016 18:53 2611522

Цитата:

Цитата NLOLegion
Использовать буду в системе голосового управления изменив под свои нужды, »

Меняйте.

Цитата:

Цитата NLOLegion
но форум думаю не для выяснения подобных нюансов и троллинга. »

Думайте.

NLOLegion 02-03-2016 08:27 2612002

Цитата:

Цитата NLOLegion
А если всё найденное нужно направить не в папку на конкретном диске С , а в папку 111 на диске с которого осуществлялся запуск по поиску? Флешка может отобразиться любым буквенным значением в зависимости от уже подключенных. »

Вопрос открыт...

children_of_bodom 09-04-2022 11:38 2982950

Приветствую Всех. Помогите пожалуйста решить следующую задачу. Нужен .bat файл, а как создать не понимаю

Есть папка под названием X. В этой папке еще сотни папок с разными названиями. И в более чем половине этих папок существуют еще подпапки в несколько уровней (где одна, где две и тд).
В папке X есть текстовый документ List.txt, в котором большой список названий файлов из этих всех папок и подпапок.
Нужно создать в папке X папку Y в которую скопируются все найденные файлы из документа List.txt
У файлов есть 2 типа разных расширений .kipr и .krig (если можно исключить их, чтобы файл копировался независимо от расширения .kipr или .krig)

P.S: Было бы замечательно еще при копировании файлов видеть в командной строке процесс копирования и после окончания копирования закрыть вручную окно командной строки.
И также все файлы которые не удалось скопировать (или найти) занести в отдельный текстовый документ Not Found.txt, расположенный также в основной папке X


Время: 18:08.

Время: 18:08.
© OSzone.net 2001-