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

Валерий_Назаров@vk 19-06-2013 10:10 2170521

Копирование файлов по маске расширения
 
Проблема:
нежен батник типа xcopy *.jpg E:\
но в этой же папке существуют файлы типа *.jpg_omt
xcopy copy копирует и *.jpg и *.jpg_omt.
т.е. если до трёх знаков или после трёх знаков маска работает правильно, то именно три знака не имеют ограничения по количеству знаков после точки в маске.
сторонние программы не катят.

Iska 19-06-2013 10:22 2170527

Валерий_Назаров@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 2170597

спасибо, работает.

Валерий_Назаров@vk 19-06-2013 13:43 2170638

в продолжении темы:
for /R %%i in ("*.jpg") do if /i "%%~xi" equ ".jpg" xcopy "%%~fi" D:\F
как прописать, что бы копировал с сохранением структуры подкаталогов?

Iska 19-06-2013 13:46 2170643

Цитата:

Цитата Валерий_Назаров@vk
как прописать, что бы копировал с сохранением структуры подкаталогов? »

Прочитать справку к «xcopy.exe»:
Код:

xcopy.exe /?
?

Валерий_Назаров@vk 19-06-2013 14:01 2170654

прочитал.
xcopy /E "%%~fi" D:\F
надо писать xcopy /E но команда for /R не передаёт названия каталогов и всё валится в корневик.

Iska 19-06-2013 14:32 2170670

Используйте robocopy:
Код:

robocopy.exe "." "d:\F" "*.jpg" /e /xf "*.jpg_omt"

Валерий_Назаров@vk 19-06-2013 14:51 2170678

всё работает и стало как-то изящней.


Время: 06:59.

Время: 06:59.
© OSzone.net 2001-