批量复制文本文档中的文件

时间:2015-07-08 17:28:17

标签: powershell batch-file copy xcopy robocopy

我发现了一些与以下相关的帖子,但还没有找到解决办法!

我有一个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

我想使用带有copy,xcopy或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

在源目录中,可能存在其他文件,但这些文件不应该被删除,只能在filelist.txt文件中找到。因此创建了副本文件结构,但没有未指定的文件。

提前致谢!

1 个答案:

答案 0 :(得分: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
}

此代码将从给定文本中获取每个文件路径,然后创建文件的文件夹树(除驱动器号之外的所有文件)。然后将文件的副本复制到新位置。