Я пытаюсь разделить все файлы PDF в папке, а затем переместить их в выходную папку. Проблема в том, что программа, которую я использую (PDFtk), разделяет только один файл за раз.
Это прекрасно работает, если имеется только 1 файл, но часто пользователи сканируют несколько файлов одновременно, и это приводит к тому, что сценарий PowerShell пожимает плечами и просто выполняет переход к выводу без разделения файлов. Я неправильно использую ForEach
?
$pdfPath = 'C:\Temp\Incoming'
$pdfoutPath = 'C:\Temp\Completed'
$pdfFile = Join-Path $pdfPath '*.pdf'
$SetsOfPages = 1
$Match = 'NumberOfPages: (\d+)'
$NumberOfPages = [regex]::Match((pdftk $pdfFile dump_data), $Match).Groups[1].Value
"{0,2} pages in {1}" -f $NumberOfPages, $pdfFile
Get-ChildItem $pdfFile | ForEach-Object {
for ($Page=1; $Page -le $NumberOfPages; $Page+=$SetsOfPages) {
$File = Get-Item $pdfFile
$Range = "{1}" -f $page, [Math]::Min($Page+$SetsOfPages-1, $NumberOfPages)
$OutFile = Join-Path $pdfoutPath ($File.BaseName + "_$Range.pdf")
"processing: {0}" -f $OutFile
pdftk $pdfFile cat $Range output $OutFile
}
Get-ChildItem $pdfoutPath '*.pdf' -Recurse | foreach {
$new_folder_Year = Get-Date $_.LastWriteTime -Format yyyy
$new_folder_Month = Get-Date $_.LastWriteTime -uformat %m
$new_folder_Day = Get-Date $_.LastWriteTime -uformat %d
$des_path = "${pdfoutPath}\${new_folder_Year}\${new_folder_Month}\${new_folder_Day}"
if (Test-Path $des_path){
Move-Item $_.FullName $des_path
} else {
New-Item -ItemType Directory -Path $des_path
Move-Item $_.FullName $des_path
}
}
Get-ChildItem $pdfPath '*.pdf' -Recurse | foreach {
$new_folder_Year = Get-Date $_.LastWriteTime -Format yyyy
$new_folder_Month = Get-Date $_.LastWriteTime -uformat %m
$new_folder_Day = Get-Date $_.LastWriteTime -uformat %d
$des_path = "${pdfoutPath}\${new_folder_Year}\${new_folder_Month}\${new_folder_Day}"
if (Test-Path $des_path){
Move-Item $_.FullName $des_path
} else {
New-Item -ItemType Directory -Path $des_path
Move-Item $_.FullName $des_path
}
}