PDA

Показать полную графическую версию : Копирование файлов по маске расширения


Валерий_Назаров@vk
19-06-2013, 10:10
Проблема:
нежен батник типа xcopy *.jpg E:\
но в этой же папке существуют файлы типа *.jpg_omt
xcopy copy копирует и *.jpg и *.jpg_omt.
т.е. если до трёх знаков или после трёх знаков маска работает правильно, то именно три знака не имеют ограничения по количеству знаков после точки в маске.
сторонние программы не катят.

Iska
19-06-2013, 10:22
Валерий_Назаров@vk, маска работает правильно в любом случае. Дело в том, что Ваши файлы «*.jpg_omt» имеют короткие имена в виде «xxxx~N.jpg» (dir /x). Потому они и попадают под маску и копируются.

Возможный обходной путь:
for %%i in ("*.jpg") do if /i "%%~xi" equ ".jpg" copy "%%~fi" "e:\"

Валерий_Назаров@vk
19-06-2013, 12:42
спасибо, работает.

Валерий_Назаров@vk
19-06-2013, 13:43
в продолжении темы:
for /R %%i in ("*.jpg") do if /i "%%~xi" equ ".jpg" xcopy "%%~fi" D:\F
как прописать, что бы копировал с сохранением структуры подкаталогов?

Iska
19-06-2013, 13:46
как прописать, что бы копировал с сохранением структуры подкаталогов? »
Прочитать справку к «xcopy.exe»:
xcopy.exe /?
?

Валерий_Назаров@vk
19-06-2013, 14:01
прочитал.
xcopy /E "%%~fi" D:\F
надо писать xcopy /E но команда for /R не передаёт названия каталогов и всё валится в корневик.

Iska
19-06-2013, 14:32
Используйте robocopy:
robocopy.exe "." "d:\F" "*.jpg" /e /xf "*.jpg_omt"

Валерий_Назаров@vk
19-06-2013, 14:51
всё работает и стало как-то изящней.




© OSzone.net 2001-2012