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

vlz47 06-02-2018 13:59 2796204

Копировать файлы в папки при совпадении имени файла и папки
 
Вложений: 2
Добрый день.

Имеется следующая структура папок:
Папка "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 2796541

Есть вот такой код:

@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 2796604

Код:

@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



Время: 23:00.

Время: 23:00.
© OSzone.net 2001-