Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   копирования файлов из исходной папки в папки получатели согласно txt.файлу (http://forum.oszone.net/showthread.php?t=345508)

sevan_k 12-06-2020 15:41 2924823

копирования файлов из исходной папки в папки получатели согласно txt.файлу
 
Здравствуйте коллеги! Помогите решить задачку. Есть папка исходник с файлами (например D:\DXF\... ). С этой папки надо скопировать файлы согласно списку указаному в txt-файле. Файлы копируются не все, а только те что указаны в txt-файле. Список файлов в txt-файле указан с полными путями в таком формате (D:\Output\D60\LBD6003U0.dxf, D:\Output\D60\D45\LXD6003U0.dxf ... ). Буду глубоко признателен, если кто-то что-то подскажет.

alpap 12-06-2020 17:14 2924835

Код:

@echo off
set "d1=D:\DXF"
set "d2=D:\OUT"

for /f "delims=" %%a in ('dir /a-d/b/s "%d1%"^|findstr /lg:"spisok.txt"') do >nul copy /y "%%a" "%d2%"
pause

только сейчас заметил как в списке указано, я делал для таких путей в списке:
D:\DXF\file1.ext
D:\DXF\fileN.ext
------
надо будет переделать позже и есть сразу вопрос какая в таком случае структура D:\DXF по отношению к D:\OUT, полностью равны за исключением имени родительской папки? Или надо будет воссоздавать пути (папки) указанные в списке.

YuS_2 12-06-2020 17:56 2924838

Цитата:

Цитата sevan_k
Список файлов в txt-файле указан с полными путями в таком формате (D:\Output\D60\LBD6003U0.dxf, D:\Output\D60\D45\LXD6003U0.dxf ... ) »

powershell
Код:

$file = '.\test.txt'
$dst = 'd:\destination'
gi ((gc $file -raw) -split '\s*,\s*|\s*\n\s*'|?{$_ -ne ''})|copy -d $dst


megaloman 12-06-2020 18:07 2924839

Код:

@Echo Off
Set "BoxIn=D:\DXF"
Set "TxtFile=D:\DXF\TxtFile.txt"
FOR /F "usebackq delims=" %%f IN ("%TxtFile%") DO 1>nul 2>&1 Xcopy /D /F "%BoxIn%\%%~nxf" "%%~dpf"

Как я понимаю задачу
Цитата:

Цитата Пример содержимого файла D:\DXF\TxtFile.txt
D:\Output\D60\LBD6003U0.dxf
D:\Output\D60\D45\LXD6003U0.dxf
D:\Output\D60\LBD6003U1.dxf
D:\Output\D60\D45\LXD6003U1.dxf
D:\Output\D60\LBD6003U2.dxf
D:\Output\D60\D45\LXD6003U2.dxf

D:\Output\D61\LBD6003U3.dxf
D:\Output\D61\D45\LXD6003U3.dxf
D:\Output\D61\LBD6003U3.dxf
D:\Output\D61\D45\LXD6003U3.dxf
D:\Output\D61\LBD6003U3.dxf
D:\Output\D61\D45\LXD6003U3.dxf

D:\Output\D61\LBD6003U0.dxf
D:\Output\D61\D45\LXD6003U0.dxf
D:\Output\D61\LBD6003U1.dxf
D:\Output\D61\D45\LXD6003U1.dxf
D:\Output\D61\LBD6003U2.dxf
D:\Output\D61\D45\LXD6003U2.dxf

Цитата:

Цитата Содержимое папки D:\DXF
D:\DXF\LBD6003U0.dxf
D:\DXF\LBD6003U1.dxf
D:\DXF\LBD6003U2.dxf
D:\DXF\LXD6003U0.dxf
D:\DXF\LXD6003U1.dxf
D:\DXF\LXD6003U2.dxf
D:\DXF\TxtFile.txt

Единственное я оттелепатил, что надо копировать только более новые файлы (/D в Xcopy)


Время: 04:36.

Время: 04:36.
© OSzone.net 2001-