ファイル名うめ込みテキスト(バッチ)生成実行ツール ABX v3.10 ■ はじめに ABX は以下のように使えます。 [1] どっかのディレクトリにある、とあるファイルを探す。 例) abx -r a:\filename.ext A:のディレクトリのどっかにある filename.extを探す. [2] 指定ファイル名を検索し, 該当ファイル名の各々に対し、某かの コマンドを実行するバッチを生成する。 例) abx *.MKI =MAG $f$nPI -S $g >a.bat カレントディレクトリにあるすべての.MKI画像ファイルを、 MAG.exeで表示しPi.exeでセーブすることで.PIファイルに 変換するバッチ a.bat を生成. [3] 指定ファイル名を検索し, 該当ファイル名の各々に対し、某かの コマンドを実行するバッチを生成し、そく実行する。 例) abx -x *.MKI =MAG $f$nPI -S $g カレントディレクトリにあるすべての.MKI画像ファイルを、 MAG.exeで表示しPi.exeでセーブすることで.PIファイルに 変換するバッチを生成して、それを実行. [4] そのディレクトリにあるすべての *.bmp ファイルを整列して 100番からの4桁の連番の名前に rename する。 例) abx -x -s -ci100 *.bmp =rename $c $+4i.bmp [5] 複数の変換方法を記述した定義ファイルを用意し、そのうち1つ の変換方法を用いて、検索したファイルに対し某かのコマンドを 実行するバッチを生成/実行する。 例) abx +abx_cg :mki2pi * 定義ファイル abx_cg.cfg で定義された変換方法 :mki2pi を用いて、.MKI ファイルを.PIファイルに変換する。 例) abx :mki:pi * 定義ファイル名が abx.cfg で変換方法名が :mki:piの場合 ■ 起動方法 abxの使い方は大別して、■はじめに、に書いた[1]〜[4] のように、 その場でちょこちょこっと変換方法を指定してバッチを作るばあいと、 [5] のように予め変換方法を集めた定義ファイルを作ってそれを用いる 場合の2つに別れます。 コマンドラインでの指定方法は以下のような感じです。 (1) abx [-オプション] [ファイル名] [=変換文字列] abx [-オプション] ['変換文字列'] [ファイル名] (2) abx [+CFGFILE] :変換名 [-オプション] [ファイル名] オプションとファイル名は順番が混ざっていてもかまいません。 オプションを処理したあと、まとめてファイル名の処理をします。 (1),(2)とも上記以外に@RESFILE(レスポンスファイル指定)という指定 もあります(-オプションと一緒に処理されます)。 =変換文字列 は、 後ろにしかおけません(というか = が現れた時点で 以降は、変換文字列として扱われます)。 '変換文字列' ならばどの位置でもかまいません。が、複数指定したり =変換文字列と同時に指定した場合の動作は不定です。 変換文字列指定が省略されたばあいで定義ファイル/レスポンスファ イルにも記述されていない場合、かつ -r が指定されていれば =$F(フ ルパス表示)が、-rがなければ =$c (ファイル名表示)が指定されたこと になります。 ■ ファイル名指定: 16ビットDOS版でのファイル指定ではワイルドカード機能があり、以下の * 0文字以上の任意の文字列に一致 ? 任意の一文字に一致 [..] [ ] 内の文字列のどれか一文字に一致 [^..] [^ ] 内の文字列以外の一文字に一致 括弧内では 0-9 のように'-'による範囲指定も可 また、括弧内では他のワイルドカード文字は機能しない があります。また、パスの区切りとして \ だけでなく / も使えます。 ※ win95コマンドライン版では、独自のワイルドカード機能はなく、 win95 のワイルドカード機能をそのまま使っていますので、[ ] の機能はありません。 ファイル名は複数指定できますが、名前がダブっているかどうかなど はチェックしていませんので気おつけてください。とくにワイルドカー ド指定時とか、-r指定とか、取り返しのつかない場合もあることでせう。 また -r を指定した場合、指定されたファイル名各々について、ディ レクトリ検索を行います... ので、可能な限り少ないファイル名数で指 定したほうが早く処理できます^^; -r 指定やワイルドカード指定のときは 検索名は1つのほうが無難で しょう。 ■ -オプション -で始まるオプションは以下のものがあります。 (/ はオプションではなく、パスの区切りとして使われます) -x バッチ実行する テンポラリ・ディレクトリに _ABX_TMP.BAT というバッ チ・ファイルを生成し、そのバッチを実行します。 生成されたバッチ・ファイルは削除されません。 -x- バッチ実行しない。 主に、定義ファイルで設定された -x を抑止するのを想 定しています。 -r ディレクトリ再帰検索する。 ファイル検索において、指定ディレクトリだけでなく、 その下にあるサブディレクトリに対しても検索を行いま す。 -r- ディレクトリ再帰検索しない. 主に、定義ファイルで設定された -r を抑止するのを想 定しています。 -a{n|r|h|s|d|a} 検索ファイルの属性指定. 検索ファイルのファイル属性を設定します。 n nomal 属性のファイルを検索 r Read Only 属性のファイルを検索 h Hidden 属性のファイルを検索 s System 属性のファイルを検索 d ディレクトリ属性のファイルを検索 a アーカイブ属性のファイルを検索 指定はもちろん一度に複数可能です。 基本的に指定した属性の何れかを持つファイルにマッチ します。 が、Hidden & System をもつファイルは, h だけや sだ けではマッチせず hs でないと駄目だったり、アーカイ バ属性の扱いも?だったりします。 (DOSの不思議ということで^^;) -a オプションの指定のない場合は -anrhsa (ディレク トリ以外のファイル)が指定されたことになります。 -z[N-M] ファイル・サイズ Nバイト以上 Mバイト以下のファイル を検索します(例:-z256-1024)。 -z10K-1M のように数字の後ろに K をつければ1024倍し、 M をつければ 1024x1024倍した値となります。 -zN-ならば N以上, -z-Mならば M以下となります。 N <= Mでないといけません。 -d[A-B] 日付 A〜Bの期間のファイルを検索します。 日付は、950721 のように西暦下2桁,月2桁,日2桁の 6桁 の数字で記述します(例:-d950101-950631)。 ファイルサイズの指定と同様に -dA-とすれば A 以降に できたファイルに、-d-Bとすれば B以前にできたファイ ルを検索します。 -s{n|e|z|t|a}{r} ワイルドカード指定のファイル名のとき、 マッチしたファイル名の昇順のソートを行います。 r を付加すれば、降順でソートします。 ソート範囲は、検索ファイル名1個でマッチし、かつ同 一ディレクトリ内のみです。 複数の検索ファイル名をコマンドラインやレスポンス・ ファイルで指定した場合は各々ごとにソートされるでし ょうし、-rを指定しても各ディレクトリ毎にソートされ るだけで全体がソートされるわけではないです。 あと、ソートのキーとして以下のものが指定できます。 n ファイル名 e 拡張子 z ファイル・サイズ(小さいもの順) t ファイル日付(古いもの順) a ファイル属性 (ディレクトリ,システム,隠し,リードオンリ, 一般の順) これらの指定のなかったときは nが指定されたことにな ります。また、n以外の e z t a では、比較結果が同一 だった場合は名前での比較を行います。 例) abx -szr *.* カレント・ディレクトリのファイ ル名一覧を大きいサイズ順に表示 -s- ソートを抑止する 主に、定義ファイルで設定された -s を抑止するのを想 定しています。 -n ファイル名検索を行わず、指定された名前をそのまま生 成に用います。この指定がなければ実際に存在するファ イル名のみ生成します。 レスポンスファイルよりファイル名を入力し、その存在 に関わらず変換を行いたい場合にもちいます。 ただし、実際にファイルがないと意味のない機能、 -r,-a,-z,-d,-s オプション機能は無視されます。 -n- ファイル名検索が行われるようにします(デフォルト). -ck 日本語交じりファイル名のみにマッチする ファイル名中に 0x80 以上の文字コードが混ざっている もののみにマッチするようになります。 -cy とは同時には指定できません(後の設定が有効) 例) abx -anrhsd -ck -r \ カレントドライブ中の 日本語ファイル名 (デ ィレクトリ含) を探す. -ck- 日本語の交じっていないファイル名のみにマッチする -cy '\' (エンマーク or バックスラッシュ) の混ざった (漢字)ファイル名のみにマッチするようになります. -ck とは同時には指定できません(後の設定が有効) -cy- '\' の交じっていないファイル名のみにマッチする -c- -ck[-],-cy[-] の機能を抑止する -ci[N] $i $I で連番を生成する場合の開始番号を指定します。 -ci[N:M] これを指定すると、指定したファイル名は無視され ファイル名でなく、N〜M までの連番数字を名前と して実行します。 -ct 見つかったファイルが、このFILEより新しい場合のみ 実行します。 データコンバートでターゲットの FILEより ソース データの日付のほうが新しいときのみ生成、と、いう のを想定しています。 FILE として、ソース名を変形するための$名を使えます。 また、その名前は、$o で参照できます。 -b 先頭にecho off、末に:ENDを付加 生成するバッチ・ファイルの先頭に echo off を付加し、 ファイル末に:END を付加します。 -b- -b を抑止する 主に、定義ファイルで設定された -b を抑止するのを想 定しています。 -t{N} 最初の N個のみ処理する ただし、ソートと同様、検索ファイル名1個でマッチし かつ同一ディレクトリ内での最初の N個です。 複数の検索ファイル名をコマンドラインやレスポンス・ ファイルで指定した場合や -r を指定した場合は各ディ レクトリごとに最初の N個を処理します。 -o 出力ファイル指定 生成した内容をに出力します。 -x とは併用しないでください。 -i 検索ディレクトリ指定 ファイル指定で、相対パス指定されたファイル名の基準 ディレクトリをカレントでなく にします。 絶対パス指定されたファイル名に対しては無効です。 以下のようなディレクトリを引き数とするバッチを作る とき、やくだつかも (ディレクトリ名の最後に \ があ ってもなくてもよいので) 例) vvvvvvvvvvvvvvv バッチの内容 vvvvvvvvvvvvvvvvv abx -x -r -i%1 *.bak =del $f ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 上記内容のファイルを delbak.bat とすれば、 > delbak a:\ というように指定できる. -w テンポラリ・ディレクトリ指定 バッチ実行や $w で参照されるテンポラリ・ディレクト リを環境変数 TMP(またはTEMP)でなく にします。 -p $Pで生成されるディレクトリ名をに強制します。 主に定義ファイル中での指定を想定しています。 -e デフォルト拡張子指定 指定されたファイル名に拡張子がついていないときに補 う拡張子を設定します。 主に定義ファイル中での指定を想定しています。 そのため特別に として変数 $1〜$9 を指定するこ とができます。 $=[STR] は 1〜9 で、$1〜$9 に文字列を設定します。 レスポンスファイル中の$での使用を想定しています。 定義ファイル中では$は別の役わりがあるので :変換名 指定とは併用しないでください(動作は不定です) : .CFG 定義ファイル中の、変換名一覧を表示します。 指定は、-x -r のように分けて指定してください. -xr のようには できません。ただし -a のみ、 -an -ar -ah でも -anrh でもかまいま せん。 ■ =変換文字列 '変換文字列' −− 生成するテキスト(バッチ)の記述 コマンドラインにおいて 'で囲まれた '文字列' か、= 以降の部分は 生成するテキストの記述となり、$変換文字以外はそのまま出力されます。 $変換文字として以下のものがあります。 ($c $x $p 等の一部は filmtn(ファイルメンテナンス)のマクロをマネ させていただきました... てか、マネたかったけど用途の違いにより 非互換部分が多くなったとも:-) $f フルパス(拡張子付) 例) d:\dir\dir2\filename.ext $g フルパス(拡張子無) 例) d:\dir\dir2\filename $v ドライブ 例) d : は付かない。 $p ディレクトリ(ドライブ付) 例) d:\dir\dir2 後ろに \ は付かない。 コマンドラインで -p され た場合はそのディレクトリ. $d ディレクトリ(ドライブ無) 例) \dir\dir2 後ろに \ は付かない。 $c ファイル(拡張子付) 例) filename.ext $x ファイル(拡張子無) 例) filename $e 拡張子 例) ext . は付かない。 $w テンポラリ・ディレクトリ. コマンドラインで -w 指定時はその場所を、 なければ環境 変数TMP(なければTEMP)の内容を、フルパスに変換したもの。 後ろに \ は付かない。 $z ファイルサイズ. 例) 1234567890 10進10桁. $Z ファイルサイズ. 例) 12345678 16進 8桁. $j 日付. 例) 1995-05-27 $i 10進数で連番を生成. $I 16進数で連番を生成. $1〜$9 定義ファイルにおいては、変換名検索で{〜}でマッチした 文字列。1〜9個まで。番号は出現順に振り当てられる. 定義ファイル以外では、コマンドラインで $1=文字列 の ようにして設定された文字列. $$ $ そのもの $n 改行 $t タブ $s 空白 $] > $[ < $` ' $^ " $# # □ 大文字/小文字 -uのとき、$変換文字の大文字小文字が、生成されたファイル名等の大 文字小文字になります。 たとえば、 $C なら FILENAME.EXT、$c なら filename.ext というよ うになります。 -u- のときは、os が見つけたファイル名そのままになります。 なお、16ビットDOS版では -u がデフォルト, 32ビット(win95)dos版で は、-u がデフォルトになります. □ 変換文字列について 変換文字列指定は、'変換文字列'を複数指定したり、=変換文字列指定 と同時に指定したり、はしないでください。複数の指定のある場合の動作 は未定です。必ず1つの変換のみにしてください。 コマンドラインの '変換文字列'や =変換文字列指定において、連続し た空白(タブやスペース)を置いた場合、生成されたテキスト(バッチ)にで は、それらが1つの空白になったり、また、置いた覚えのない空白が挿 入されたりするばあいがありますが、これらは仕様なので、気にしない でください:-) □ 文字列の桁揃えについて $c, $x, $f, $g, $e, $p, $d, $j において桁数そろえる指定として $+13c $+31f のように、$と文字の間に+数字をおけば、その桁数に文字列が足りない 場合空白を補います。その桁数より長い場合は文字列はそのままで切る ことはありません。 なお日付文字列 $j に関しては、 $+8j とすれば 97-10-31 に, $+5j にすれば 10-31 のように 短くする指定となります。 □ 連番生成について $i,$I を指定すると、ファイル名ごとに、0から順に番号が生成され ます(-ciN により 0以外の数字から始められます)。 以下のように abx -s *.jpg =ren $c cg_$+4i.$e して、連番でファイル名を一括で変名したりするのを想定しています。 $i は$+4iのように桁指定すると、空白でなく0が補充されます。 (cg_0012.jpgのように) また、-cN:M で -c100:999 のように終了番号を指定すると、指定された ファイル名は無視され、連番を名前として処理します。この場合は基本 的に $f や $c は使わず $i,$I を用いてください。 ■ レスポンス・ファイル レスポンス・ファイルは、コマンド・ラインで @resfile で指定され るファイルで、-オプション、ファイル、=変換文字列をそのファイルよ り読み込みます。 =変換文字列以外に関しては、改行は空白とみなし、処理されます。 また、# が見つかれば行末までをコメントとみなし空白として扱います。 問題は = の扱いで、 コマンド・ラインとは少々違い、変換文字列の 指定は = の直後からでなく、=のあった行の次の行から、ファイルの終 わりまでとなります。また、改行が改行として扱われます(無理に$nと かを使う必要がなくなります)。#コメントも コメントでなくそのまま 生成されます。ただし、行頭の#begin,#end,#bodyのみ判別され、その 動作をします。 例) はじまめ、の [3]をレスポンスファイルに書き直すと、 vvvvvvvvvvvvvvvvv ファイルの内容 vvvvvvvvvvvvvvvvvvv -eMKI #デフォルト拡張子を MKI にする -x # バッチ実行 = # この次の行からEOF までが変換文字列 mag $f pi -s $g ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ で、ファイル名を mki2pi.res とすると、 > abx @mki2pi.res * のようにできます。 ■ 定義ファイル(.CFG) を使うとき 定義ファイルを用いた利用方法は以下のようになります。 (2) abx [+CFGFILE] :変換名 [-オプション] [ファイル名] +CFGFILE で指定されるファイルが定義ファイルで拡張子は.CFG です。 .CFG ファイルは、abx.exeと同じディレクトリに置く必要があります。 (正確には、相対パス指定ならば abx.exeのあるディレクトリを基準に し、フルパス指定ならばそのパスより読込みます) この+ファイル指定は省略可能で、そのばあい abx.cfg が読込ます。 :変換名 は : で始まり空白(スペース,タブ)以外の文字からなる文字列 です. :変換名 は、.CFGファイル中で定義された変換名で、この :変換名が指 定された段階で .CFG ファイルは読み込まれます(つまり、+CFGFILEが 指定されても :変換名が指定されないと読み込まれません)。 ■ 定義ファイル(.CFG)の書き方 定義ファイルは、早い話し、複数のレスポンス・ファイルを1つにま とめたものです。 もちろん、単純にファイルを繋げただけでは、定義の区切りがわかり ませんので、各定義の先頭に :文字列で始まる行を置き(行頭に空白を 入れられません)、それで判別します。 実行時は、コマンドラインで :変換名が指定されれば、定義ファイル を読み込み、 行頭に : がある行を探し、あればコマンドラインで指定 された変換名と同じかどうか比較し、同じであれば、その次ぎの行から の定義を利用します。 一つの定義の終わりは 次の : で始まる行の直前までです。 (正確には : の行の一つ前の行の改行の手前までです)。 :で始まる行の文字列は、空白が現れるまでを比較の対象とします。 大文字小文字は区別しませんし、{ | } 以外の記号を含めることも出来 ます({ | } については次項を参照)。 でも漢字にはちゃんと対応していないので駄目です^^; 定義ファイル中でも、# で始まり改行までを改行までをコメントとし ますが、おける場所は、定義ファイルの頭と、各定義での =の直前まで の部分です。(ファイルの先頭には必ず1行はコメントが必要です)。 例) vvvvvvvvvvvvvvvvv ファイルの内容 vvvvvvvvvvvvvvvvvvv # 定義ファイル・サンプル :MKI2PI -eMKI -x = mag $f pi -s $g :Q4toPI -eMKI -x = hsx $f pi -s $g ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ で、ファイル名を abxtest.cfg で abx.exe と同じ場所におく とすると、 > abx +abxtest :q4topi * のように使うことができます。 ■ 定義ファイルでの { | } を用いた :変換名 の指定 この定義ファイルは、もともと画像や音楽ファイル等のファイル変換 を想定して用意した機能で、いくつかのコンバータ(ソフト)を組み合わ せて使うことにより、より多くの種類間のコンバートを手軽に行おうと いうものです。 これらの変換においては、データの種類は拡張子名で判別されること が多く、また、1つのコンバータ(ソフト)で複数の種類に対応している ものも結構あり、定義ファイルの定義において、単純な文字列比較だけ で記述すると、同じような定義を山ほど書くことになりたいへんなので、 少し楽できる機能として次のようなものがあります。 :変換名中の一部を {STR1|STR2|STR3} のように記述することにより、 {〜} 中 | で区切られた何れかの文字列にマッチするようにし、マッチ した場合はマッチした文字列を変数 $1〜$9 に設定するようにしました。 ({〜}の数は 9個まで。先頭から順に番号が1〜9まで振り当てられます) $1〜$9 は、変換文字列中(あと特別に -e で)に使用できます。 コマンドラインでの $N=文字列 指定と、:変換名指定の併用はしない でください。動作は不定です。 例) vvvvvvvvvvvvvvvvv ファイルの内容 vvvvvvvvvvvvvvvvvvv # 定義ファイル・サンプル :PIC:{tif|bmp|rgb|q0|djp} #1 -x -ePIC = picld .$1 $g :PIC:{mag|pi} #2 -x -ePIC = picld .pmt $f -o$w\$x.pmt mg .pmt.$1 $w\$x.pmt -o$g.$1 del $w\$x.pmt :{q0|rgb|bmp|djp}:PIC #3 -x -e$1 = picsv .$1 $g :{mag|pi}:PIC #4 -x -e$1 = mg .$1.pmt $g.$1 -o$w\$x.pmt picsv .$1 $w\$x.pmt -o$g.pic del $w\$x.pmt :{mag|pi|bmp|tif|djp}:{mag|pi|bmp|tif|djp|q0|rgb} #5 -x -e$1 = mg .$1.$2 $g -o$g.$2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ で、ファイル名を abx.cfg で abx.exe と同じ場所におくとす ると、 > abx -r :mag:pic * のように使うことができます。このばあい、#4の行でマッチし、 mg でmagファイルを適当な中間ファイル形式にしてテンポラリ ・ディレクトリに生成し それを picsv が読み込み元のディレ クトリに picファイルを生成します。あと作業ファイルを削除 します(-rを指定しているので、カレント・ディレクトリ以下 のディレクトリに対して行うことになる) ■ { | }でマッチした文字列に従い、別の文字列を使いたいとき 前項において、{ | } でマッチした文字列を $1 〜 $9 に代入すると いいましたが、実際のところ、それだけでは使い道が少ないです。 そこで、{ | } 中の何番目の文字列にマッチしたかを利用して、別の { | }中のその位置の文字列を選択し、余っている$変数に代入できるよ うにしました。書き方は、 $M:N{STR1:STR2:...} # M,N : 1〜9 といった感じで、オプション指定に混ぜて(つまり =が現れるまでに) 指定します。 変換名中に指定されたN番目の { | } のマッチした位置と同じ位置の { | } 中の文字列を変数 $M に代入します。 例) vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv :JPG:{Q1|RGB|PPM} -e$1 -x $2:1{-F|-i|-P} = jld $2 $p\$x.$1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ という変換があり、コマンドラインで :JPG:RGB が指定されたなら、 $1には RGB が入り、$2 には -i が入ります。 ■ コマンドラインの -p指定、定義ファイル中の $P 指定 定義ファイルに画像コンバート等の定義を書いて使うとき、元画像と 同じディレクトリに変換後のファイルを生成したい場合と、まったく別 のディレクトリに生成したい場合があります。 そのような目的のために、$p をコマンドラインで -p で強制的 に変更できるようにしました。 定義ファイル中では最終的に生成するファイルのディレクトリを$pを 用いて記述しておけば、普段は、変換元と同じディレクトリに、 -p で ディレクトリを指定すればそのディレクトリに生成するようになります。 -p と -r を指定をしたばあいで、入力時が違うディレクトリでも -p で指定されたディレクトリに階層が作られるわけでなくすべてその1つ のディレクトリに生成されることになります。 ■ レスポンス・ファイル中での特殊指定 v3.00 以前、何某かのファイル名一覧による定義ファイルを生成する とき、ファイル一覧部を abx で生成しその前後にテキストを付けたい 場合、他のファイルを前後に付けるバッチを組んだりしてたのですが、 ファイルの本数増えて嫌だしよくある?作業なので、abx のみでできる よう、レスポンスファイル中に前後につけるテキストを指定できるよう にしました。 #begin 直前に出力するテキスト #end 直後に出力するテキスト #body #begin,#end以外の本来のオプション、ファイル名指定用 #body,#begin,#end は行頭のみ指定可能で、他の指定が現れるまでその 状態になります。デフォルトは #body です。 #begin,#end でのテキストでは、$$,$1〜$9 のみが指定可能で、かつ $1〜$9 はコマンドラインで指定したものを想定しています。 例) vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv # リンクファイル生成 -n = INPUT $C #begin ;リンク INPUT c:\a\lib\start.obj #end LIB c:\a\lib\ccc.lib OUTPUT $1.bin MAP $1.map ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ■ 使用上の注意(制限)など ・配布ファイルでは16ビット版はabx16.exe, 32ビット版が abx.exe となっています。必要に応じて変名してください。 ・-xでバッチ実行を行うことを想定して、必ず環境変数 TMP(かTEMP) か -w でテンポラリ・ディレクトリを指定しておいてください。 テンポラリ・ディレクトリは、生成したバッチの影響をうけない独 立したディレクトリをちゃんと用意してください(入力ファイル、 出力ファイルのあるディレクトリに絶対ならないようにしてくださ い)。 (しかしデフォルトのAUTOEXEC.BAT で SET TEMP=A:\DOS とかされ ている場合がある... なぜ... TEMPってテンポラリに使っちゃ駄 目なのかな^^;) ・-x をすると、テンポラリに _ABX_TMP.BATというファイルが作られ ますが実行後に削除するようなことはしてません。 ・このプログラムでは指定されたファイル名は一旦フルパスに変換さ れるのですが、最大長として 250バイト位以下(32ビット版では1000) であることを前提とし、文字数チェックはやっておりません。その ため、非常識に深いディレクトリのファイルを指定すると暴走の危 険性があるかも ... もっとも MS-DOS においてはこれで困らないハ ズですが :) ・$1〜$9 の各サイズも 250バイト(32ビット版は1000)位です。 ・定義ファイルの先頭一行は必ずコメントが必要です。プログラム的 なことをいえば、行頭の : を探すのに単に strstr(buf,"\n:") を してるだけだからです. また、その絡みで :変換名の前行は、空行 でないと駄目でせう。 ・定義ファイルの最大サイズは、16K バイトです。それ以上あっても 読み込みません。もっともそんなでっかい定義ファイル書くことな いでせう(32ビット版は 128K バイト). ・1ファイル名あたりに生成されるテキストの最大サイズも 16Kバイ トです。それより大きいとメモリ破壊を興すでしょう。 もっとも、よほど複雑にしない限り、1ファイル名に対し生成され るテキストは1Kバイトにも満たないものなので十分でせう。 (32ビット版は 128K バイト) ・定義ファイルは ABX.CFG とすることで コマンドラインでの指定を 省略できますが、実は実行ファイル名の拡張子を.CFGに取り替えた ファイル名であればよく、逆に、実行ファイル名を定義ファイルご とに変えて用意する、という方法もあります。 ・16ビット版ではファイル名は必ず8.3形式で、32ビット版はロング ファイル名です。32ビット版abx で、ロングファイル名未対応のツ ールのために 8.3形式のファイル名を生成するという機能はありま せん。 ■ たわごと 各種コンバータを交互に起動するタイプの画像コンバータを作らにゃ なあ思いつつ、自分が使う分には abx の前身の plcfという自作ツール (ファイル名をうめ込んだテキストを生成するだけ)でそのつどバッチ を生成してりゃすんでたので作らずじまいだったのですが、他人にコン バート作業をやってもらうとなると結構めんどくさい... と。 でもって plcf のデキがいまいちで作りなおしたかったこともあり、気 合? 入れたらこんなんになってしまいました(^^; 画像専用で各種コンバータ呼び出しコンバータを作ったほうが呼び出 すプログラムにあわせた特化した設定ができてよいかなとも思うのだけ ど、いろいろ使用するコンバータの事情考えたり調べたりするのはめん どくさく、また各コンバータがバージョンアップや仕様変更があったと きのこと思うとやはりめんどくさいので、大味でいくことにしました。 ま、各コンバータの細かいオプションとか設定するばあいは、そのつど、 ファイル名うめ込みのバッチを生成したほうが、結局はやいし楽だし:) ■ おわりに このプログラムはいわゆるフリーソフトウェア(FSW)です。 オンラインでの非営利配布ならば作者に連絡不要で再配布していただ いてかまいません。その他の場合(雑誌紹介とかディスク配布で同梱し たいなど)事前に相談ください、ってことで. ソースですが、原作者を含め第三者のプログラミングを阻害しない人 に限り流用や改造は自由です(改造部分の著作権でもって他者の利用を 禁止するとかいう人は駄目ということに) 直接的な改造物を再配布したい場合は改造物であることを明示し配布 条件を原作者と同じような趣旨にしてください。ささいな流用程度なら ば出所明記は特には不要です。 それから作者はいかなる責任も義務も負いません。利用者の責任で用 いてください。 例によって十分なチェックを行ってるわけでないので(それどころか かなり不十分)... てんか☆ (きたむらまさし) NBB00541@nifty.ne.jp http://homepage2.nifty.com/tenk/