Войти

Показать полную графическую версию : Копирование файлов содержащих в имени -210-


jestergrid
11-12-2013, 13:39
Здравствуйте
помогите написать батник который будет копировать файлы расширения *.mp3 и содержащие в имени -210- в другой каталог с сохранением структуры папок
На форму наткнулся на подобную задачу, но приложенный бат файл не решает полностью проблему

set DIR=D:\common
set TXT=D:\210.txt
set DST=D:\210

pushd "%DIR%" && ( for /f "delims=" %%a in (
'dir/s/b/a-d *.mp3^|findstr/g:"%TXT%"') do copy/-y "%%a" "%DST%"
)

заранее спасибо всем

Опиум
11-12-2013, 15:04
навскидку так пойдет?


cd /d d:\common

for /f "delims=*" %%i in ('dir /b /a-d /s *.mp3') do (attrib -a "%%i" & echo %%i |find "-210-" && attrib +a "%%i")
xcopy /e /a /i *.mp3 d:\210

jestergrid
12-12-2013, 07:05
Опиум, все работает, можно еще узнать , если вдруг понадобиться искать по нескольким значениям , например -210- или -211- как это правильно реализовать?

Опиум
12-12-2013, 14:46
для 211 можно написать дополнительную инструкцию for

Iska
12-12-2013, 15:12
Проще использовать «findstr.exe /c:"-210-" /c:"-211-"» вместо «find.exe».

jestergrid
13-12-2013, 05:50
Проще использовать «findstr.exe /c:"-210-" /c:"-211-"» вместо «find.exe». »Можно по подробней, изучал основы программирования, но с батниками не работал, как правильно использовать findstr?
Буду признателен за подробные комментарии =)

Iska
13-12-2013, 06:43
Заменить «find "-210-"» на «findstr.exe /c:"-210-" /c:"-211-"».

jestergrid
13-12-2013, 13:18
set DIR=D:\NEW_FTP\Dialog\common
set TXT=D:\NEW_FTP\Dialog\txt.txt
set DST=D:\NEW_FTP\Dialog\admin\

pushd "%DIR%" && ( for /f "delims=" %%a in (
'dir/s/b/a-d *.mp3^|findstr/g:"%TXT%"') do xcopy /s /e /y "%%a" "%DST%"
)

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

Опиум
18-12-2013, 17:27
jestergrid, аллё, ты сделал чтото своё.
Не вижу в твоем примере моего решения, где xcopy запускается отдельно, а не в теле цикла.




© OSzone.net 2001-2012