每月保存为新名称和文件

时间:2017-05-17 08:00:34

标签: powershell

我有一个文件夹,其中包含多个名为xxx_xxx_01.05.2017.pdf的pdf文件。 每天我还有一个文件,我启动这个脚本来合并它们并保存D:\123\DB052017.pdf

目标是在合并当月的所有文件后自动创建新文件。

下一个文件适用于xxx_xxx_01.06.2017.pdf等新月份,我想创建一个名为DB062017.pdf的新文件,依此类推......

你能告诉我一个线索吗?

Add-Type -Path C:\assemblies\PdfSharp.dll                        

Function Merge-PDF {            
    Param($path, $filename)                        

    $output = New-Object PdfSharp.Pdf.PdfDocument            
    $PdfReader = [PdfSharp.Pdf.IO.PdfReader]            
    $PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode]                        

    foreach($i in (gci $path *.pdf -Recurse)) {            
        $input = New-Object PdfSharp.Pdf.PdfDocument            
        $input = $PdfReader::Open($i.fullname, $PdfDocumentOpenMode::Import)            
        $input.Pages | %{$output.AddPage($_)}            
    }                        

    $output.Save($filename)            
}

Merge-PDF -path c:\fso -filename D:\123\DB052017.pdf

这是我为结束文件所做的:

Add-Type -Path C:\assemblies\PdfSharp.dll                        
$MonthName =  (Get-Date).Month 
$YearName =   (Get-Date).Year      
Function Merge-PDF {            
    Param($path, $filename)                        

    $output = New-Object PdfSharp.Pdf.PdfDocument            
    $PdfReader = [PdfSharp.Pdf.IO.PdfReader]            
    $PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode]                        

    foreach($i in (gci $path *.pdf -Recurse)) {            
        $input = New-Object PdfSharp.Pdf.PdfDocument            
        $input = $PdfReader::Open($i.fullname, $PdfDocumentOpenMode::Import)            
        $input.Pages | %{$output.AddPage($_)}            
    }                        

    $output.Save($filename)            
}
Merge-PDF -path c:\fso -filename D:\Users\h.yordanov\Desktop\WEBDams\Data\CHQ\HQ\DB$MonthName""$YearName.pdf

现在我需要获取或移动不同月份的文件夹中的文件。

1 个答案:

答案 0 :(得分:0)

我想我做到了。在每个新的月份都会创建新的pdf,当月份结束时,所有文件都会被移动。 :)

Add-Type -Path C:\assemblies\PdfSharp.dll                        
$MYName =  Get-Date -format y  
$movepdfs = "C:\fso\*.pdf"
$a = (Get-ChildItem -path c:\fso).Name
$b = $a -replace '[^0-9]', ''
$c = $b.Substring(2,2)
$e= Get-Date -format MM

If ($c -lt $e) {
   Move-Item $movepdfs c:\oldpdfs -WhatIf 
    }


Function Merge-PDF {            
    Param($path, $filename)                        

    $output = New-Object PdfSharp.Pdf.PdfDocument            
    $PdfReader = [PdfSharp.Pdf.IO.PdfReader]            
    $PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode]                        

    foreach($i in (gci $path *.pdf -Recurse)) {            
        $input = New-Object PdfSharp.Pdf.PdfDocument            
        $input = $PdfReader::Open($i.fullname, $PdfDocumentOpenMode::Import)            
        $input.Pages | %{$output.AddPage($_)}            
    }                        

    $output.Save($filename)            
}

Merge-PDF -path c:\fso -filename C:\WEB\Apache24\htdocs\WEBDams\Data\CHQ\HQ\1\$MYName.pdf