フォルダーをループし、GhostScript(9.07)を使用してフォルダー内のPDFをフラット化するバッチスクリプトがあります。PowerShellスクリプトに変換したいのは、たまにクラッシュするようで、バッチファイルのデバッグにうんざりしているからです。
とにかく、コンソールでの出力に基づいて機能しているように見えるPSスクリプトがありますが、実際にはファイルを取得していません。PSへの手動入力はさらに機能しないようです...何が間違っているのですか?
バッチスクリプト
@ECHO OFF
::
:: Process all PDFs and flatten them to PDF/A format
:: =====================================================================================
FOR %%F IN ("J:\Finals\*.pdf") DO (
IF /I %%F NEQ "*Floor Plan*.pdf" (
:: Convert the original PDF to a flattened PDF PDF/A
:: ========================================================================
"%ProgramFiles%\gs\gs9.07\bin\gswin64.exe" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="J:\Finals\%%~nF (Final).pdf" "%%F"
::
:: Delete the original PDF file
:: ========================================================================
DEL "%%F" /F /Q
::
:: Rename the flattened PDF PDF/A to the original PDF's name
:: ========================================================================
MOVE "J:\Finals\%%~nF (Final).pdf" "%%F"
)
)
::
:: Move files form the Readdle drive to the Digital Documents drive
:: =====================================================================================
ROBOCOPY J:\Finals\ K:\ *.* /MOV /R:0 /W:0 /MT
PowerShellスクリプト(これまでのところ)
$GhostScript = "$env:ProgramFiles\gs\gs9.07\bin\gswin64c.exe"
Get-ChildItem "C:\Test In\*.pdf" | Where {
$_.BaseName -NotMatch "Floor Plan"
} | ForEach-Object {
$InputFile = $_.FullName
$OutputFile = "C:\Test Out\{0} (Final).pdf" -F $_.BaseName
& "$GhostScript" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OutputFile" "$InputFile"
}
PowerShellスクリプトの出力
GPL Ghostscript 9.07 (2013-02-14)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Substituting font Times-Italic for TimesNewRomanPS-ItalicMT.
Loading NimbusRomNo9L-ReguItal font from %rom%Resource/Font/NimbusRomNo9L-ReguItal... 4198200 2870566 3665244 2332637 3 done.
Substituting font Courier for CourierNewPSMT.
Loading NimbusMonL-Regu font from %rom%Resource/Font/NimbusMonL-Regu... 3755680 2306439 4089108 2566088 3 done.
Loading NimbusRomNo9L-Regu font from %rom%Resource/Font/NimbusRomNo9L-Regu... 3796376 2391131 4078352 2484871 3 done.
Loading Dingbats font from %rom%Resource/Font/Dingbats... 3917480 2509851 4280192 2689988 3 done.
これを気にする人は誰でも、Windows Server2008R2仮想マシンでテストされています。4GBのRAMと4vCPUを搭載しています。また、使用しているテストフォルダーにアクセス許可の問題があるかどうかも確認しましたが、そうではありませんでした。
アップデート
現在のスクリプトがどのように見えるかを示すために投稿を更新しました。変数を引用符で囲ん$OutputFile
でも何も起こりません。引用符の有無に関係なく、GhostScriptが想定どおりに動作していることを示す出力(上記で追加)を常に取得しますが、最終的にはファイルが作成されません...