我试图编写一个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
}
}
答案 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