*[PPx]PPxカスタマイズメモ - レスポンスファイル活用例

先日書庫ファイルのハンドリングはWinRARに統一。
Pキーには
%"作成先パス" %Ob WinRAR a -r "%$2%\%X.rar" @"%a*"
%"作成先パス" %Ob WinRAR a "%$2%\%X.rar" @"%a*"
を定義。
PPxのレスポンスファイルを使用して、最初にマークした
ファイル名(拡張子なし).rarにすべてのファイルを
まとめて圧縮するようにした。


その発展系としてマークしたエントリーを個別に
圧縮することを考えてみる。

%Obsと%X、%Cを使えば簡単だが、%Obsを使うと
処理が終わるまでPPxの操作ができない。
レスポンスファイルを使用して操作禁止を回避するのが目的。


WinRARは書庫ファイル名と処理ファイル名の二つを
指定することが必要。

DOS窓のfor 〜 in 〜 doコマンドはファイル中の
行をデリミタで区切れば最大52個の変数として
処理可能らしいが、いかんせんPPxのレスポンス
ファイルではき出せるのは一つだけ。


困ったなぁーと思いつつFORのヘルプを丹念に眺める。
目に付いたのが%~nI。ファイル名だけ展開。

これ使えるかも!
いろいろとテストしてみて自分の求めるもので
あることがわかった。

更にテストすると%a*は%C相当と言うよりは%FC相当
みたいでスペースが入ると"で囲まれてしまう。
これは%FCNで逃げた。

またFORを使おうとすると%OBd、%Obd指定で動かず。
dがないとDOS窓(PPb窓)が開いてうっとうしい。

こりゃコマンドエコー殺すしかないなと@echo off追加。
最終的に\Pはこんな感じに落ち着いた。

%Obd %"作成先パス" @echo off&For /F "tokens=*" %%I in (%a*FCN) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%$2%\%%~nI.rar" "%%~I"
DOSコマンド中なのでエイリアスは効かない
#後でわかったが%'エイリアス名'で取得できる

もっと簡単な方法があるかもしれないけど
これが自分の限界かな。