将文件列表从多个位置移动到另一个位置

时间:2018-01-26 08:34:56

标签: powershell

我试图编写一个powershell脚本,将列表文件从列表移动到目标文件夹。

C:\list.txt包含每个文件的完整路径,例如C:\testfolder\test.jpg,该文件可以有10条路径到1000条。

到目前为止,我编写了以下代码。但是使用$search_folder意味着只查看1个文件夹,但我希望它能够查看list.txt中的路径。

我似乎无法找到如何让我从list.txt查找文件的路径。

$file_list = Get-Content C:\list.txt
$search_folder = "C:\test1"
$destination_folder = "C:\test2"

foreach ($file in $file_list) {
    $file_to_move = Get-ChildItem -Path $search_folder -Filter $file -Recurse -ErrorAction SilentlyContinue -Force | % { $_.FullName}
    if ($file_to_move) {
        Move-Item $file_to_move $destination_folder
    }
}

2 个答案:

答案 0 :(得分:0)

由于list.txt文件包含完整路径,因此您不需要在文件夹中搜索文件以确定该文件是否存在。

您只需要测试完整路径,然后将其移至目的地:

$file_list = Get-Content C:\list.txt
$destination_folder = "C:\test2"

ForEach ($file in $file_list) {
    If (Test-Path $file) {
        Move-Item $file $destination_folder
    }
}

答案 1 :(得分:0)

Move-Item将为Path采用一系列字符串,因此您可以直接使用$file_list中的Get-Content

$file_list = Get-Content C:\list.txt
$destination_folder = C:\test2

Move-Item -Path $file_list -Destination $destination_folder

......实际上可以缩短为oneliner:

Move-Item -Path (Get-Content C:\folder\list.txt) -Destination C:\test2