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

miraxgroup 19-08-2014 21:06 2391470

Поиск и копирование заданных в параметре скрипта файлов
 
Прошу помощи (как и все здесь присутствующие).
Есть папка с подпапками, условный статичный путь “C:\АЛФАВИТ\”, содержит она подпапки и файлы с различным расширением вида :
Код:

А\10001,10002,10003-0.jpg
А\10001,10002,10003-1.jpg
Б\20001,20002,20003-0.jpg
Б\20001,20002,20003-1.jpg
В\30001,30002,30003-0.jpg
В\30001,30002,30003-1.jpg

И.т.д.
Необходимо : рекурсивно (пробегаясь по подпапкам), батником, скопировать определенные файлы с помощью параметра в батнике (поиск в имени файла) с разделителем (пусть будет “|”) в определенную папку (заданную так же параметром). Условное исполнение:

Код:

Script.bat 20002|30003 C:\РЕЗУЛЬТАТЫ\ПМ-00001\
Результат выполнения: в заданной в параметре папке C:\РЕЗУЛЬТАТЫ\ПМ-00001\
Появятся скопированные файлы :
Код:

20001,20002,20003-0.jpg
20001,20002,20003-1.jpg
30001,30002,30003-0.jpg
30001,30002,30003-1.jpg

Заранее благодарен!

Iska 20-08-2014 00:07 2391526

Цитата:

Цитата miraxgroup
пусть будет “|” »

Не будет. Этот спецсимвол имеет вполне определённый смысл для интерпретатора команд пакетных файлов.

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sDestFolder=%~1
set sTemplate=%~2

if not defined sDestFolder (
        echo Not defined destination folder.
        call :Usage
        exit /b 1
)

if not defined sTemplate (
        echo Not defined template for find.
        call :Usage
        exit /b 2
)

if not exist "%sDestFolder%\." (
        echo Can't find destination folder [%sDestFolder%].
        exit /b 3
)

:Repeat
for /f "usebackq delims=" %%i in (
        `dir /b /s /a:-d "C:\АЛФАВИТ\*.*" 2^>nul ^| findstr.exe /i /r /c:"%sTemplate%"`
) do >nul copy "%%~i" "%sDestFolder%\"

shift /2
set sTemplate=%~2
if defined sTemplate goto :Repeat

endlocal
exit /b 0

:Usage
        echo Usage: %~0 ^<Destination folder^> ^<Template^> [^<Template^> ...]
        exit /b 0

Вызов пакетного файла — сначала результирующая папка, затем шаблоны для команды «findstr.exe». Для Вашего примера:
Код:

Script.cmd "C:\РЕЗУЛЬТАТЫ\ПМ-00001" 20002 30003


Время: 16:33.

Время: 16:33.
© OSzone.net 2001-