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

Ответить
Аватара пользователя
Alexander_88

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

Сообщение Alexander_88 »

Здравствуйте, подскажите, пожалуйста, как можно найти файлы в каталоге (который я укажу) и во всех его каталогов/подкаталогов, а потом переместить все эти найденные файлы в одну папку (которую я укажу). Список файлов находится в тхт файле (в столбик, с расширением)



Мы указываем путь, где нужно искать файлы (включая каталоги/подкаталоги):



Код:

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

C:\OneDrive\work\NewsMaker

Указываем файл old.txt в котором находится имена файлов, которые прописаны с расширением в столбик.



Указываем папку в которую нужно переместить все найденные файлы:





Код:

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

C:\OneDrive\work\NewsMaker\MOVE

Изображение
Аватара пользователя
megaloman

Re: CMD/BAT - Поиск файлов в каталогах/подкаталогах и перемещение в единую папку

Сообщение megaloman »

Alexander_88, возможны ли файлы с одинаковыми именами в разных подкаталогах? Если возможны, то как их перемещать?
Аватара пользователя
Alexander_88

Re: CMD/BAT - Поиск файлов в каталогах/подкаталогах и перемещение в единую папку

Сообщение Alexander_88 »

Нет, такого быть не может, все имена разные, есть почти одинаковые, но 1 символ всеравно различается, поэтому полностью одинаковых нету Изображение
Аватара пользователя
Alexander_88

Re: CMD/BAT - Поиск файлов в каталогах/подкаталогах и перемещение в единую папку

Сообщение Alexander_88 »

Если в именах файлов возможны русские буквы и батник и текстовый файл с их именами в 866(dos) кодировке

[spoiler]Код:
[/spoiler]

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

@Echo Off
CLS
Set "FName=E:\Delete\file name 866.txt"
Set "From=E:\ddd\Games"
Set "To=E:\ddd\Ку Ку"
Md "%To%" 2>nul
If Not Exist "%From%" (
	Echo Папка "%From%" не существует
	GoTo :Eof
)
If Not Exist "%FName%" (
	Echo Файл "%FName%" не существует
	GoTo :Eof
)
FOR /F "usebackq delims=" %%f IN ("%FName%") DO (
	FOR /F "usebackq delims=" %%i IN (`Dir "%From%\%%f" /s /A-d /B 2^>nul`) DO (
		Echo %%i
		Move /Y "%%i" "%To%\"
	)
)
Pause








Если в именах файлов возможны русские буквы и батник и текстовый файл с их именами в 1251 кодировке

[spoiler]Код:
[/spoiler]

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

@Echo Off
CLS
Chcp 1251 >nul
Set "FName=E:\Delete\file name 1251.txt"
Set "From=E:\ddd\Games"
Set "To=E:\ddd\Ку Ку"
Md "%To%" 2>nul
If Not Exist "%From%" (
	Echo Папка "%From%" не существует
	pause
	GoTo :Eof
)
If Not Exist "%FName%" (
	Echo Файл "%FName%" не существует
	pause
	GoTo :Eof
)
FOR /F "usebackq delims=" %%f IN ("%FName%") DO (
	FOR /F "usebackq delims=" %%i IN (`Dir "%From%\%%f" /s /A-d /B 2^>nul`) DO (
		Echo %%i
		Move /Y "%%i" "%To%\"
	)
)
pause





Подстановочные знаки в именах файлов, например, *.exe, возможны
Аватара пользователя
Alexander_88

Re: CMD/BAT - Поиск файлов в каталогах/подкаталогах и перемещение в единую папку

Сообщение Alexander_88 »

Спасибо, проверил, работает, я взял второй вариант Изображение
Ответить

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