大家好,感谢您的帮助!
我制作了一组PDF文件,这些文件都保存在
中L:\ ClientSort \
这些文件中的每一个都有以下列方式的命名约定
XXX_A123456_YYY.PDF XXX_300123123_YYY.PDF
(xxx代表品牌) yyy代表帐户类型)
我需要做的是根据CSV,Excel或文本文件中的条件将这些PDF移动到两个目录之一。
我将执行文件应该在此文件中发送的逻辑,并在D列中提供我想要移动PDF的文件位置。
请参阅随附的电子表格以进一步说明这一点。
基本上......如果PDF命名约定包含A列中的帐号,我需要将文件移动到D列中指定的位置。
我已经看过尽可能多的不同解决方案,我能找到的是封闭的 Link to poss solution
任何人都有任何想法如何实现这一目标?
我创建的代码来自多个来源,但我目前还没有足够的Powershell知识来进一步了解这一点。
Set-Location “L:\ClientSort”
$Folders = Import-Csv L:\ClientDataSort.csv
ForEach($Folder in $Folders) {
New-Item $Folder.folders -type directory
}
$text = Import-Csv “L:\ClientDataSort.csv”
$dir = Get-ChildItem L:\ClientSort
foreach($item in $text ){
foreach ($folder in $dir) {
#where Package is the name of the column in the csv file and FileName the name of #second column in the input csv file
#I do not know how to get this to look at the values as a wildcard
if($item.Package - AccountRef $Folder.Name){
$sourcefile = “L:\ClientDataSort\” + $item.Filename #I Do not know how to get this to export to what's in column D as a location
$target = “L:\CliendDataSort” + $folder.Name
Move-Item$sourcefile$target
Write-Host“Folder $item.FileName moved sucessfully to $target”-ForegroundColor Green
}
}
}
此致
理查德
$moveTargets = @{}
$csvFile = '.\ClientDataSort.csv'
$sourceFolder = 'L:\ClientSort'
foreach ($record in Import-Csv -Path $csvFile)
{
$moveTargets[$record.AccountRef] = $record.FileSortLocation
}
Get-ChildItem -Path $sourceFolder |
ForEach-Object {
$pdfFile = $_
if ($pdfFile.Name -match '^[^_]*_([^_]*)_[^_]*\.pdf$')
{
$accountRef = $matches[1]
$target = $moveTargets[$accountRef]
if ($target)
{
Move-Item -Path $pdfFile.FullName -Destination $target
}
}
}