揮発性のメモ2

http://d.hatena.ne.jp/iww/

ドラッグ&ドロップでascファイルを解凍するバッチファイル

@echo off
set PATH=D:\cygwin\bin;%PATH%

set Password=hogehoge
set OutputFolder=D:\MyDoc\download


set InputFile=%1
set OutputFile=%OutputFolder%\%~n1

bash -c 'echo %Password% | gpg --batch --yes --passphrase-fd 0 -o %OutputFile% %InputFile%'




それぞれの行の意味

@echo off
set PATH=D:\cygwin\bin;%PATH%

BATファイルからCygwinを呼び出す際に必ず必要なおまじない。
cygwin1.dll のあるパスを通しておく。

set Password=hogehoge
set OutputFolder=D:\MyDoc\download

gpgで使うパスフレーズと、解凍したファイルを置くフォルダ

set InputFile=%1
set OutputFile=%OutputFolder%\%~n1

BATファイルの引数から 入力ファイル名と出力ファイル名を取り出す。
ドラッグ&ドロップされたファイル名は、BATファイルに引数(%1,%2,...)としてつけられて実行される。
バッチファイルでドラッグ&ドロップの情報を取得 - その他(プログラミング・開発) 解決済み| 【OKWAVE】
変数 %1 からファイル名部分を切り出すには %~n1 とする。
バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法 - みちしるべ

bash -c 'echo %Password% | gpg --batch --yes --passphrase-fd 0 -o %OutputFile% %InputFile%'

gpgコマンド実行

--batch
バッチとして実行
--yes
質問にはすべてハイと答える(ファイルの上書き確認など)
--passphrase-fd n
パスフレーズを ファイルディスクリプタn (0なら標準入力)から読むようにする
-o filename
出力ファイル名の指定

https://www.gnupg.org/gph/de/manual/r1023.html
標準入力はシェルで起動しないと作られないので、bashから呼び出す。
ダブルクォートで呼び出すと \ でエスケープされてしまうので、シングルクォートで囲う。

わかっている問題

ファイル名に空白が入っているとエラーになる。