プロが教えるわが家の防犯対策術!

こんにちは。よろしくお願いします。

現在、マルチPDFを『PaperSize.bat』にD&Dすると用紙サイズが
取得されるツールを使っていましす。

●PaperSize.bat
ここから-----------------------------------------------------
@echo off
set pathA=%~dp0
set pathB=\GetSize.csv
set pathAB=%pathA%%pathB%

"C:\Program Files\gs\gs9.21\bin\gswin64c.exe" ^
-q ^
-sFile=%1 ^
-dDumpMediaSizes ^
"C:\Program Files\gs\gs9.21\lib\pdf_info.ps" > "%pathAB%"
echo %ERRORLEVEL%
ここまで----------------------------------------------------

これを、PowerShellを使って実現しようと試みたのですが、
期待どおりに動きません。

●PaperSize.ps1
ここから-----------------------------------------------------
Add-Type -Assembly System.Windows.Forms
#サイズ取得
$tool1 = 'C:\Program Files\gs\gs9.21\bin\gswin64c.exe'
$tool2 = 'C:\Program Files\gs\gs9.21\lib\pdf_info.ps'
$Path0 = $MyInvocation.MyCommand.Path
$Path1 = Split-Path -Parent $Path0
$Path2 = "\GetSize.csv"
$Path3 = $Path1 + $Path2
$arg = $args[0]
& $tool1 -q -sFile= $arg -dDumpMediaSizes $tool2 > $Path3
ここまで----------------------------------------------------

PaperSize.ps1のショートカットを作って、プロパティのリンク先に
おまじないを追加して…
マルチPDFをショートカットにD&Dして動かしています。
CSVファイルは生成されるのですが、以下のメッセージとなってしまいます。
●GetSize.csv
>>showpage, press <return> to continue<<

どなたかお知恵を貸して頂けませんでしょうか。

質問者からの補足コメント

  • うーん・・・

    あれこれ試してみると
    & $tool1 -q -sFile= $arg -dDumpMediaSizes $tool2 > $Path3 を
    & $tool1 -q -sFile=C:\Users\***\****\***.pdf -dDumpMediaSizes $tool2 > $Path3 と
    -sFile= に直接パスを指定すると期待どおり動くことがわかりました。
    ここにD&Dしたファイル名を指定したいのですが、記述がわかりません。
    お分かりの方おりましたらご協力お願いいたします。

      補足日時:2021/01/11 10:58

A 回答 (2件)

>-sFile= $arg


を以下のようにしてみては。
"-sFile=$arg"

$argに渡されたファイルパスがダブルクォートで囲まれてると、追加の対処が必要ですが。
    • good
    • 0
この回答へのお礼

osamuyさん
ありがとうございます。
できました!!
感激!
感謝、感謝です。
今後とも何卒宜しくお願い致します。

お礼日時:2021/01/11 11:46

-dBATCH -dNOPAUSE を追加してみるとか。


参考: https://www.ghostscript.com/doc/current/Use.htm
    • good
    • 0
この回答へのお礼

osamuyさん、はじめまして。
ご回答、ありがとうございます。
& $tool1 -q -sFile= $arg -dBATCH -dNOPAUSE -dDumpMediaSizes $tool2 > $Path3
として実行してみましたが、以前と結果が変わりません。
記述が違うのでしょうか…

お礼日時:2021/01/10 23:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!