2015-07-08 2 views
0

Я нашел несколько сообщений, относящихся к следующему, но еще не достиг пути к решению!Пакет для копирования файлов из текстового документа

У меня есть файл Filelist.txt флуда список файлов:

C:\test1\sample1.txt 
C:\test2\sample2.txt 
C:\test3\folder1\sample3.txt 
C:\test3\folder1\sample4.txt 
C:\test3\folder1\folder2\sample5.txt 

Я хочу использовать пакетный файл с копией, хсору или Robocopy читать точные файлы и скопировать их в указанную директорию вместе с папками, т.е. в результате:

C:\copy_folder\test1\sample1.txt 
C:\copy_folder\test2\sample2.txt 
C:\copy_folder\test3\folder1\sample3.txt 
C:\copy_folder\test3\folder1\sample4.txt 
C:\copy_folder\test3\folder1\folder2\sample5.txt 

В исходных каталогах могут быть и другие файлы, но они не должны быть coppied, только те, в файле filelist.txt. Таким образом, создается репликация, но без неуказанных файлов.

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

+0

'for/F 'delims ="% x in (filelist.txt) do @echo% ~ dx "% ~ px" "% ~ nxx" 'может быть отправной точкой. Прочитайте _entire_ 'for /?' (До _подстановки FOR variable_) – JosefZ

+0

Ваш пример результата неверен. Файл sample2.txt должен быть 'C: \ copy_folder \ test2 \ sample2.txt', и то же самое относится к остальным файлам ** ИЛИ ** первый файл является неправильным и должен быть' C: \ copy_folder \ sample1.txt'. Какой из этих _different_ результатов вы хотите? – Aacini

+0

Извинения Aacini, первый правильный путь. Я изменил вопрос, чтобы отразить это. –

ответ

0

Если вы хотите использовать чистый PowerShell метод можно использовать следующий код:

$destination = "C:\copy_folder" 
$textFileWithPaths = "C:\filelist.txt" 

Get-Content $textFileWithPaths | % { 
    # Create the destination folder path 
    $NewFolder = Split-Path (Join-Path $destination $_) -Parent | Split-Path -NoQualifier` 

    # Check if the path exsists - create if it doesn't exsist 
    If(!(Test-Path $NewFolder)){ 
     New-Item -ItemType Directory -Path $NewFolder -Force 
    } 
    # Copy the file to new location 
    Copy-Item $_ $NewFolder -Force 
} 

Этот код будет принимать каждый путь к файлу из данного текста, а затем создать папку дерева файла (все но буква диска). Затем скопируйте файл в новое место.

+0

Спасибо, Чарлз, я на самом деле просто обходился почти таким же способом с PowerShell - спасибо за ваш вклад! –

Смежные вопросы