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

Alexander_88 24-11-2015 22:59 2578634

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

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

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

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

Код:

C:\OneDrive\work\NewsMaker\MOVE
:)

megaloman 25-11-2015 03:04 2578667

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

Alexander_88 25-11-2015 05:05 2578672

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

megaloman 25-11-2015 23:56 2578921

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

@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 кодировке
Код:

@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 26-11-2015 22:44 2579203

Спасибо, проверил, работает, я взял второй вариант :)


Время: 01:18.

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