Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Вариант1
Код: Выделить весь код
@Echo Off

Set In1=E:\Delete\KWTFCB
Set In2=E:\Delete\123
Set Out=E:\Delete\KWTFCB_123

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

FOR %%k IN ("%In1%\KWTFCB_*.txt") DO (
	Set kFile=%%~nxk
	Set kFile=!kFile:KWTFCB_=!
               FOR /R "%In2%" %%f IN (!kFile!) DO If Exist "%%f" Move /Y "%%k" "%Out%\" && Move /Y "%%f" "%Out%\"
)
Вариант2
Код: Выделить весь код
@Echo Off

Set In1=E:\Delete\KWTFCB
Set In2=E:\Delete\123
Set Out=E:\Delete\KWTFCB_123

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

FOR %%k IN ("%In1%\KWTFCB_*.txt") DO (
	Set kFile=%%~nxk
	Set kFile=!kFile:KWTFCB_=!
               FOR /F "usebackq delims=" %%f IN (`Dir "%In2%\!kFile!" /b /s /A:-D`) DO Move /Y "%%k" "%Out%\" && Move /Y "%%f" "%Out%\"
)
Какой способ быстрее-не исследовал, подозреваю - второй. В любом случае надо определить Ваши реальные папки In1 In2 Out (без \ на конце). Первый способ наверное можно чуть ускорить, но это не принципиально

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-02-2012 в 12:18. Причина: Дополнение

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:15, 15-02-2012 | #6