先日書庫ファイルのハンドリングは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コマンド中なのでエイリアスは効かない
#後でわかったが%'エイリアス名'で取得できる
もっと簡単な方法があるかもしれないけど
これが自分の限界かな。