2017-05-17 10 views
0

xxx_xxx_01.05.2017.pdfという名前の複数のpdfファイルがあるフォルダが1つあります。 毎日もう1つのファイルがあり、このスクリプトをマージして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 

今、私は別の月にフォルダにあるファイルを取得または移動する必要があります。

+0

あなたの質問はありますか? –

+0

質問は、月のすべてのファイルをマージした後、新しいファイルを自動作成する方法です。次のファイルは "xxx_xxx_01.06.2017.pdf"で、名前が "DB062017.pdf"の新しいファイルを作成する必要があります。 – Hristian

+0

[Get-ChildItemを更新する](http://stackoverflow.com/questions/15884173)/limited-powershell-get-childitem-by-file-creation-date-range)ので、作成日までに1ヶ月分のファイルしか取得できません: –

答えて

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 
関連する問題