CMD/BAT - Поиск и копирование найденных файлов

Аватара пользователя
Jans

CMD/BAT - Поиск и копирование найденных файлов

Сообщение Jans »

Задача следующая: нужен батник,который будет искать и копировать найденный файлы скажем в папку C:\111\

т.е если ищем все файлы *.jpg ,чтобы все копировал в заданную директорию!

Помогите разобраться,знаю,было пару подобных тем,но до нужного мне кода пока не дорос!заранее спасибо!
Аватара пользователя
Jans

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение Jans »

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

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение Iska »

Цитата Jans:



благодарствую за вопрос!
CMD/BAT - Поиск и копирование найденных файлов




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

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение Jans »

Код:

Код: Выделить всё

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 ('^
Аватара пользователя
2ooth

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение 2ooth »

Код:

Код: Выделить всё

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 ('^
Аватара пользователя
El Sanchez

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение El Sanchez »

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

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение Jans »

Цитата Jans:



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




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



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

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение El Sanchez »

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

Re: CMD/BAT - Поиск и копирование найденных файлов

Сообщение NLOLegion »

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

Вернуться в «Скриптовые языки администрирования Windows»