powershell基于csv内容移动文件

时间:2014-06-24 08:09:11

标签: excel powershell pdf csv

大家好,感谢您的帮助!

我制作了一组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
    }
}

}

0 个答案:

没有答案