Войти

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


vlz47
06-02-2018, 13:59
Добрый день.

Имеется следующая структура папок:
Папка "D:\tmp\folder2" в которой содержатся txt файлы, каждый файл с уникальным именем по ФИО, например "иванов иван иванович.txt", "петров петр петрович.txt" и т.д.
Папки вида "D:\tmp\folder1\arm*\ФИО", например "D:\tmp\folder1\arm1\иванов иван иванович"

Задача:
Перенести txt файлы из каталога "D:\tmp\folder2" в соответствующие им по имени папки каталога "D:\tmp\folder1\arm*\ФИО", т.е. чтобы в итоге файл "петров петр петрович.txt" попал в папку "D:\tmp\folder1\arm1\петров петр петрович", файл "иванов иван иванович.txt" в каталог D:\tmp\folder1\arm2\иванов иван иванович и т.д.

vlz47
07-02-2018, 17:55
Есть вот такой код:

@echo off
for /f "delims=" %%a in ('2^>nul dir /ad/b/r "D:\tmp\folder1\* "') do if exist "D:\tmp\folder2\%%~nxa.txt" >nul copy "D:\tmp\folder2\%%~nxa.txt" "D:\tmp\folder1\%%a"
pause

но он работает только если целевая директория, в которую нужно скопировать одноименный txt файл, находится в корне каталога folder1, например - D:\tmp\folder1\петров петр петрович, а нужно, чтобы файл копировался в - D:\tmp\folder1\arm1\петров петр петрович

megaloman
07-02-2018, 22:04
@Echo Off
cls

Set "FoldMask=Z:\tmp\folder1\arm*"
Set "FileFold=Z:\tmp\folder2"
Set "FileExt=txt"

FOR /D %%d IN ("%FoldMask%") DO (
FOR /D %%p IN ("%%d\*.*") DO (
>nul Move /Y "%FileFold%\%%~nxp.%FileExt%" "%%p\" ||Echo File "%FileFold%\%%~nxp.%FileExt%"
)
)
Pause




© OSzone.net 2001-2012