13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: =★ B2E(Bridge To Executables) Script 仕様書 13b7203622 2011-02-23 kinaba: =★ 2010/10/14 13b7203622 2011-02-23 kinaba: =★ k.inaba ( http://www.kmonos.net/ ) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 1.概要 ------------------------------------------------------ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Noahは、定義ファイルを追加することで他のexeのフロントエンド 13b7203622 2011-02-23 kinaba: となることが出来ます。つまり、「コマンドライン用の圧縮解凍ソ 13b7203622 2011-02-23 kinaba: フトは面倒!」と思ったら、Noahと連携させて簡単なGUIで操作が 13b7203622 2011-02-23 kinaba: できるようになるわけです。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 定義ファイルは、Noah.exeと同じ階層のb2eフォルダに入れること 13b7203622 2011-02-23 kinaba: で自動で認識されます。以下ではこの定義ファイルの書き方を解説 13b7203622 2011-02-23 kinaba: していきます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 2.ファイル名 ------------------------------------------------ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ・拡張子は b2e 13b7203622 2011-02-23 kinaba: ・ファイル名に対応拡張子を記述 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ex) 拡張子ishとuueとuuを展開可能にするためのスクリプトなら 13b7203622 2011-02-23 kinaba: ish.uue.uu.b2e 13b7203622 2011-02-23 kinaba: ex) となります。zzを展開するためのモノなら、単に 13b7203622 2011-02-23 kinaba: zz.b2e 13b7203622 2011-02-23 kinaba: ex) ですね。圧縮しか行わない場合は出来れば、 13b7203622 2011-02-23 kinaba: #rar.b2e 13b7203622 2011-02-23 kinaba: ex) のように、頭に # を付けて下さい。(必須ではありません) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 3.サンプル ------------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | load: 13b7203622 2011-02-23 kinaba: | (name Rar.exe) 13b7203622 2011-02-23 kinaba: | (type rar Fast Default *Best) 13b7203622 2011-02-23 kinaba: | 13b7203622 2011-02-23 kinaba: | encode: 13b7203622 2011-02-23 kinaba: | (if (method 1) (cmd a -m1 -r0 (arc.rar) (list\*.*))) 13b7203622 2011-02-23 kinaba: | (if (method 2) (cmd a -m3 -r0 (arc.rar) (list\*.*))) 13b7203622 2011-02-23 kinaba: | (if (method 3) (cmd a -m5 -mm -r0 (arc.rar) (list\*.*))) 13b7203622 2011-02-23 kinaba: | 13b7203622 2011-02-23 kinaba: | sfx: 13b7203622 2011-02-23 kinaba: | (cmd s (arc)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | load: 13b7203622 2011-02-23 kinaba: | (name 777.exe) 13b7203622 2011-02-23 kinaba: | (type 777 777) 13b7203622 2011-02-23 kinaba: | 13b7203622 2011-02-23 kinaba: | encode: 13b7203622 2011-02-23 kinaba: | (if (method 1) (cmd a (arc.777) (list\*) -mg)) 13b7203622 2011-02-23 kinaba: | 13b7203622 2011-02-23 kinaba: | decode: 13b7203622 2011-02-23 kinaba: | (cmd x (arc)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 4.構造 ------------------------------------------------------ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ・load: EXE名などを書く部分 13b7203622 2011-02-23 kinaba: ・decode: 解凍コマンドを書く部分 13b7203622 2011-02-23 kinaba: ・encode: 圧縮コマンドを書く部分 13b7203622 2011-02-23 kinaba: ・sfx: 書庫→SFX変換コマンドを書く部分 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: の4セクションに分かれます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 5.load: ----------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | load: 13b7203622 2011-02-23 kinaba: | (name EXE名) 13b7203622 2011-02-23 kinaba: | (type 圧縮形式名 圧縮レベル名1 圧縮レベル名2 ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: と書きます。圧縮を行わない時は、type の文は書かなくてOK。 13b7203622 2011-02-23 kinaba: ※ 圧縮レベル名の頭に * を付けると、それが標準圧縮レベルになります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 6.decode: --------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | decode: 13b7203622 2011-02-23 kinaba: | (cmd 実行するコマンド) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: コマンド中の以下の文字列については自動で置き換えられます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (arc) … 解凍する書庫名 13b7203622 2011-02-23 kinaba: (dir) … 解凍先フォルダ名 13b7203622 2011-02-23 kinaba: (arc-.xx ln) … 書庫名から拡張子.xxを除いたもの 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 7.encode: --------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | encode: 13b7203622 2011-02-23 kinaba: | (if (method 1) (cmd 圧縮レベル1のときのコマンド)) 13b7203622 2011-02-23 kinaba: | (if (method 2) (cmd 圧縮レベル2のときのコマンド)) 13b7203622 2011-02-23 kinaba: | 以下同様 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 自動置き換えは以下の通り。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (arc.xxx) … 圧縮先書庫名(拡張子xxx) 13b7203622 2011-02-23 kinaba: (dir) … 圧縮したいファイルのあるフォルダ名 13b7203622 2011-02-23 kinaba: (arc d) … 圧縮先フォルダ名 13b7203622 2011-02-23 kinaba: (list) … 圧縮したいファイルのリスト 13b7203622 2011-02-23 kinaba: (list\*) … 圧縮したいファイルのリスト 13b7203622 2011-02-23 kinaba: (list\*.*) … 圧縮したいファイルのリスト 13b7203622 2011-02-23 kinaba: { ↑フォルダ名を渡すときに使うワイルドカードが違います } 13b7203622 2011-02-23 kinaba: { それぞれ、"dir" "dir\*" "dir\*.*" という形式を使います } 13b7203622 2011-02-23 kinaba: { どれを使えばよいやらわからなかったら、とりあえず } 13b7203622 2011-02-23 kinaba: { (list\*) と書いておいてください。 } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 8.sfx: ------------------------------------------------------ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: | sfx: 13b7203622 2011-02-23 kinaba: | (cmd 書庫からSFXへ変換するコマンド) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 自動置き換えは以下の通り。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (arc) … 元書庫名 13b7203622 2011-02-23 kinaba: (arc.exe) … SFX書庫名 13b7203622 2011-02-23 kinaba: (dir) … 作業フォルダ名 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 9.encode1: sfxd: -------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 書庫化機能がない圧縮ソフトやテキストエンコーダなど、圧縮時 13b7203622 2011-02-23 kinaba: には一つしかファイルを受け取らないソフトがあります。このよう 13b7203622 2011-02-23 kinaba: なソフトに対応するときは、encode: の代わりに、encode1: と 13b7203622 2011-02-23 kinaba: 書いておいてください。そうすればNoah側で適当にうまいこと処理 13b7203622 2011-02-23 kinaba: します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 書庫→SFX変換機能がなく、直接一気にSFXに圧縮するしかない 13b7203622 2011-02-23 kinaba: ソフトもあります。そんなときには sfx: の代わりに sfxd: を 13b7203622 2011-02-23 kinaba: 使います。SFX圧縮時にはNoahは直接 sfxd: を使うようになります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: encode1: も sfxd: も、自動置き換えは encode: と全く同じです。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 10.休憩 ------------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: さっぱりわからないぃ〜状態の人は、実際に完成したファイルを 13b7203622 2011-02-23 kinaba: 眺めてみると、頭が整理されるかもしれません。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: http://b2efile.tripod.co.jp/ 13b7203622 2011-02-23 kinaba: ( yc氏のサイト。100個以上のb2eが公開されています。 ) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 仕様書なんてこんな固いもん見てもわかるか!状態の人は、 13b7203622 2011-02-23 kinaba: 実際どんな手順で書いていけばよいか、を解説したサイトが 13b7203622 2011-02-23 kinaba: きっと役に立つことでしょう。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: http://homepage3.nifty.com/scriba/manu/ 13b7203622 2011-02-23 kinaba: ( SB氏のサイトの一角。Noah付属のものよりずっと丁寧な 13b7203622 2011-02-23 kinaba: マニュアルとなっています。 ) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: さて、ここから下は、結構内容が濃いです。知らなくても普通に 13b7203622 2011-02-23 kinaba: b2eを書く分には全く困らない知識ばっかりです。(^^; 13b7203622 2011-02-23 kinaba: それでも読んでみたい奇特な人だけどうぞ…… 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: =★ 13b7203622 2011-02-23 kinaba: =★ 第二部 13b7203622 2011-02-23 kinaba: =★ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 11.英語モードでexeを実行する技 ------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 日本語版WindowsのDOS窓で動かすと、なんだか ロロロロン と出てきて 13b7203622 2011-02-23 kinaba: 格好悪かったり、最悪の場合全く動かない…というアーカイバに 13b7203622 2011-02-23 kinaba: 出会ったことはありませんか? 13b7203622 2011-02-23 kinaba: これらは、"usモード" に切り替えてから実行すると上手く動く 13b7203622 2011-02-23 kinaba: ことが多いです。Noahでこの切り替えを行うには、最初の name で、 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (name EXE名 us) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: と、後ろに us を付けて下さい。これで、そのb2eに書かれた(cmd)や 13b7203622 2011-02-23 kinaba: (xcmd)の実行の際には、自動でusモードになるようになります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 12.統合アーカイバDLL用スクリプト ----------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: load: のところで (name DLL名) とすればOKですが、それだと 13b7203622 2011-02-23 kinaba: ・ファイル内容による書庫判定 13b7203622 2011-02-23 kinaba: ・書庫閲覧&部分解凍 13b7203622 2011-02-23 kinaba: が出来ません。致命的です。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 前者を有効にするには、 13b7203622 2011-02-23 kinaba: check: 13b7203622 2011-02-23 kinaba: って一行どこかに書いてください。中身は要りません。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 後者を有効にするには、decode1: セクションを書きます。 13b7203622 2011-02-23 kinaba: 自動置き換えは decode: セクションと同じものに加え、 13b7203622 2011-02-23 kinaba: (list) と書くとそこに解凍ファイル名リストが入るようになります。 13b7203622 2011-02-23 kinaba: decode1: セクションでは、出来るだけグラフやエラーメッセージを 13b7203622 2011-02-23 kinaba: 抑止するようなオプションをつけて cmd して下さい。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: DLL名からAPI名を算出するため、大文字小文字は間違えないように。 13b7203622 2011-02-23 kinaba: 基本的には[最初一文字大、あと小]で大丈夫ですが、UnZip は Z も 13b7203622 2011-02-23 kinaba: 大文字に。UnGCA も要注意。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: また、元々Noahに内蔵されているルーチンはb2eより優先されるため、 13b7203622 2011-02-23 kinaba: ただb2eファイルを追加しただけでは、例えばUnlha32.dll用の動作を 13b7203622 2011-02-23 kinaba: 置き換えることは出来ません。noah.ini ファイルに次の形式で 13b7203622 2011-02-23 kinaba: 隠し設定を記述することで、内蔵ルーチンを使わないようにできます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Kill=使いたくない内蔵ルーチン 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例えば Kill=LCT なら、Unlha32,Cab32,Tar32 を使用しなくなります。 13b7203622 2011-02-23 kinaba: L … Unlha32 Z … UnZip32 z … Zip32j 13b7203622 2011-02-23 kinaba: R … Unrar32 C … Cab32 T … Tar32 13b7203622 2011-02-23 kinaba: B … Bga32 G … UnGCA32 A … Unarj32j 13b7203622 2011-02-23 kinaba: a … UnaceV2 Y … Yz1 c … Cpt 13b7203622 2011-02-23 kinaba: 7 … 7-zip32 M … MS-Compress 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13.大量のb2eを入れると --------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: バージョン情報の表示が遅くなる環境があるそうです。 13b7203622 2011-02-23 kinaba: そんな場合は Noah.ini ファイルに 13b7203622 2011-02-23 kinaba: OldAbout=1 13b7203622 2011-02-23 kinaba: と一行付け加えてください。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 14. As a Script Language -------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 上でさんざん[自動置き換え]として (arc) とかを紹介しましたが、 13b7203622 2011-02-23 kinaba: 気分的には全然違います。( 機能名 引数1 引数2 ... ) の形の 13b7203622 2011-02-23 kinaba: functionをひたすら組み合わせて書く、Lispのまがい物のような 13b7203622 2011-02-23 kinaba: スクリプト言語のつもり。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例 (+ 25 8) = 33 13b7203622 2011-02-23 kinaba: (* 3 7) = 21 13b7203622 2011-02-23 kinaba: (+ 11 (* 3 4)) = 23 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: こんな感じで計算もできます。+ だったら一個目の数と二個目の数を 13b7203622 2011-02-23 kinaba: 足した結果を返す[関数]と考えられるのと同様、(arc) も、適当な 13b7203622 2011-02-23 kinaba: オプションをとって書庫名を返す[関数]として実装しています。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ==================================================== 13b7203622 2011-02-23 kinaba: ◇変数処理 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 変数名はアルファベット一文字、a-z, A-Z の52個が使えます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例 (let a 25) 13b7203622 2011-02-23 kinaba: (let b 10) 13b7203622 2011-02-23 kinaba: (+ %a %b) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 最後の足し算の計算結果は 35 になります。 13b7203622 2011-02-23 kinaba: letで変数に値を代入して、%変数名、で入れた値を取り出せます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例 (let d (arc d)) 13b7203622 2011-02-23 kinaba: (cmd a -d%d (list\*.*)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 変数には文字列も入るので、上のような使い方も可能です。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ==================================================== 13b7203622 2011-02-23 kinaba: ◇使うときに注意が必要な文字 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 送りたいコマンドや圧縮レベル名などに %"() の4種類の字を 13b7203622 2011-02-23 kinaba: そのまま書くとバグります。 13b7203622 2011-02-23 kinaba: それぞれ %%, %", %(, %) というように前に % を付けて下さい。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ==================================================== 13b7203622 2011-02-23 kinaba: ◇全functionリファレンス 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★実行制御系 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (exec ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 機能:左から順に、単純に引数を実行していく 13b7203622 2011-02-23 kinaba: 返値:最後の引数の値 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (if A B C) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 機能:Aが真ならBを実行。Cがある場合,Aが偽ならCを実行 13b7203622 2011-02-23 kinaba: 返値:実行した方の文(BかC)の値 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (while A B) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 機能:Aが真である間、Bを繰り返し実行 13b7203622 2011-02-23 kinaba: 返値:無し 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★代入系 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (let A B) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 機能:変数Aに、Bを代入。 13b7203622 2011-02-23 kinaba: ※Aには、変数名から%を除いた文字が入る。 13b7203622 2011-02-23 kinaba: 返値:Aに入った値 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★演算系 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ( + A B) … A+B 13b7203622 2011-02-23 kinaba: ( - A B) … A−B 13b7203622 2011-02-23 kinaba: ( * A B) … A×B 13b7203622 2011-02-23 kinaba: ( / A B) … A÷B 13b7203622 2011-02-23 kinaba: (mod A B) … AをBで割った余り 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ( = A B) … AとBが等しければ真、等しくなければ偽 13b7203622 2011-02-23 kinaba: ( ! A B) … AとBが等しければ偽、等しくなければ真 13b7203622 2011-02-23 kinaba: ( ! A) … Aが偽なら、真なら偽 13b7203622 2011-02-23 kinaba: ( < A B) … A < B なら真、でなければ偽 13b7203622 2011-02-23 kinaba: ( > A B) … A > B なら真、でなければ偽 13b7203622 2011-02-23 kinaba: (between A B C) … A <= B <= C なら真、それ以外なら偽 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ( + A B) … A or B (足し算は、論理和にも使えます) 13b7203622 2011-02-23 kinaba: ( * A B) … A and B(掛け算は、論理積にも使えます) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★load: 系 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (name A) 13b7203622 2011-02-23 kinaba: (type A B C D ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 上の説明通り。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (use A B C D ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: そのb2eで、nameで指定したexe以外に利用するファイルがあるなら 13b7203622 2011-02-23 kinaba: このuseによって設定します。例えば 13b7203622 2011-02-23 kinaba: ex) (use sfx32gui.dat zcrypt23.dll) 13b7203622 2011-02-23 kinaba: などと書いておくと、Noahのバージョン情報に、sfx32gui.datなどが 13b7203622 2011-02-23 kinaba: 表示されるようになります。ただし、ここに書いたからと言って 13b7203622 2011-02-23 kinaba: 実際の圧縮解凍作業に変化はありません。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★その他のセクションで使えるもの(単純) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (dir) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 基準フォルダ名を「ショートファイル名・フルパス」で返します。 13b7203622 2011-02-23 kinaba: decode:中は解凍先、encode:中は圧縮元 sfx:中は作業ディレクトリ 13b7203622 2011-02-23 kinaba: をたぶん返します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (is_folder) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ドロップされたものがフォルダ一つだったら真、でなければ偽。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (is_file) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ドロップされたものがファイル一つだったら真、でなければ偽。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (is_multiple) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ドロップされたものが複数だったら真、でなければ偽。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (cd A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: カレントディレクトリをAに設定します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (method A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: encode: encode1: sfxd: の時のみ意味があります。 13b7203622 2011-02-23 kinaba: 単に (method) と書くと、ユーザーが指定した圧縮レベルを返します。 13b7203622 2011-02-23 kinaba: (method 1) などと書くと、指定したレベルが 1 かどうかの真偽を返します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (size A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ファイルAのサイズをバイト単位で返します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (slash A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 文字列Aの中の \ を / に置き換えた文字列を返します。 13b7203622 2011-02-23 kinaba: Unix系のコマンドで \ をディレクトリと認識してくれないもの向けに。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (find A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 名前がAのファイルをPATHの通ったディレクトリから探し、 13b7203622 2011-02-23 kinaba: 見つかったらフルパス、見つからなければ偽を返します。 13b7203622 2011-02-23 kinaba: ex) (if (find notepad.exe) (....)) 13b7203622 2011-02-23 kinaba: notepad.exeがある時だけ何か実行。 13b7203622 2011-02-23 kinaba: ex) (let s (find stubwin.sfx)) (cmd s %s (arc)) 13b7203622 2011-02-23 kinaba: stubwin.sfxをシステムフォルダなどから探してきてsにそのフルパスを入れる。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (cmd ARG1 ARG2 ARG3 ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (name)で指定した実行ファイルへコマンドを送ります。 13b7203622 2011-02-23 kinaba: 上では(arc)は自動置き換え…とか書きましたが、 13b7203622 2011-02-23 kinaba: functionを使っているので当然の如く 13b7203622 2011-02-23 kinaba: (cmd ##(arc)##) 13b7203622 2011-02-23 kinaba: とかやっても ##c:\windows\install.cab## というコマンドが送られたりはしません。 13b7203622 2011-02-23 kinaba: つまり、スペースで離された一パラメータの場合しか置き換えは効かないわけです。 13b7203622 2011-02-23 kinaba: そうでない置き換えをしたいときには、(let) で一旦変数に代入してから 13b7203622 2011-02-23 kinaba: 変数名を埋め込めばOKです。 13b7203622 2011-02-23 kinaba: (cmd)命令自体の値は、実行の終了コードとなります。 13b7203622 2011-02-23 kinaba: ex) (if (! 0 (cmd ...)) エラー処理) 13b7203622 2011-02-23 kinaba: xcmdについても同様。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (xcmd A ARG1 ARG2 ...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 外部コマンド呼び出し。 13b7203622 2011-02-23 kinaba: 最初に実行ファイル名を書いて、以降のパラメータでコマンドを書きます。 13b7203622 2011-02-23 kinaba: (xcmd del A) とか (xcmd copy B C) など、DOSの内部コマンドの起動も可能。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ★その他のセクションで使えるもの(複雑) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (input MESSAGE DEFAULT) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: ユーザーに文字列を入力させるときに使います。入力を促すメッセージを 13b7203622 2011-02-23 kinaba: 第一引数に、デフォルトの入力値を第二引数に書いて下さい(省略可能)。 13b7203622 2011-02-23 kinaba: 入力された文字列が値として返されます。 13b7203622 2011-02-23 kinaba: (let p (input "パスワードを入れてね")) 13b7203622 2011-02-23 kinaba: (cmd x -p%p (arc)) 13b7203622 2011-02-23 kinaba: とかそんな感じに利用。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (arc[+-].ext [slfnd]) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 書庫名指定。Noah は内部変数として、 13b7203622 2011-02-23 kinaba: ・書庫のあるフォルダ名 <-- 書庫の存在するDir(解SFX) or 出力先Dir(圧) 13b7203622 2011-02-23 kinaba: ・書庫名(LongFileName) <-- 書庫名(解SFX) or dropした一個目のファイル名(圧) 13b7203622 2011-02-23 kinaba: ・書庫名(ShortFileName) <-- 書庫名(解SFX) or dropした一個目のファイル名(圧) 13b7203622 2011-02-23 kinaba: を持っています。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: まず右の[slfnd]は置いといて左の部分を解説。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (arc … 書庫名をそのままストレートに 13b7203622 2011-02-23 kinaba: (arc. … 書庫名から拡張子を全て除いたもの 13b7203622 2011-02-23 kinaba: (arc.lzh … 書庫名から拡張子を全て除いて、.lzh につけかえたもの 13b7203622 2011-02-23 kinaba: (arc+.lzh … 書庫名の拡張子は取らず、後ろに .lzh をくっつけたもの 13b7203622 2011-02-23 kinaba: (arc-.szip … szipという拡張子だったらそれをとりのぞいたもの、 13b7203622 2011-02-23 kinaba: # そうでなかったら、後ろに .decompressed をくっつけたもの 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: それぞれ 13b7203622 2011-02-23 kinaba: ===解凍・SFX変換時の書庫名指定 13b7203622 2011-02-23 kinaba: ===CPShrink対策 (--;) 13b7203622 2011-02-23 kinaba: ===圧縮時の普通の書庫名指定 13b7203622 2011-02-23 kinaba: ===aaa.txt を圧縮するとき書庫名を aaa.txt.gz にしたいとき便利 13b7203622 2011-02-23 kinaba: ===aaa.txt.gz を解凍するとき名前を aaa.txt に戻したいとき便利 13b7203622 2011-02-23 kinaba: です。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 次、[slfnd] の解説。1番目のパラメータにこれらの文字があると、 13b7203622 2011-02-23 kinaba: s … 書庫名にはShortFileNameを使う 13b7203622 2011-02-23 kinaba: l … 書庫名にはLongFileNameを使う 13b7203622 2011-02-23 kinaba: f … 書庫名はディレクトリ+名前(FullPath)で。 13b7203622 2011-02-23 kinaba: n … 書庫名は名前(NameOnly)で。 13b7203622 2011-02-23 kinaba: d … 書庫名はディレクトリ(Direcotry)で。 13b7203622 2011-02-23 kinaba: という指定になります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: s === 短いファイル名しか通さないアーカイバに便利。 13b7203622 2011-02-23 kinaba: d === 書庫名を直接指定できないで、出力先しか指定できないものに便利。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: デフォルトオプション( 単に (arc) と書いたときのオプション )は、 13b7203622 2011-02-23 kinaba: decode: lf 13b7203622 2011-02-23 kinaba: encode: lf 13b7203622 2011-02-23 kinaba: sfx: ln 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例題。書庫名が "c:\programs\あいうえお.lzh" の場合、 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 1) (arc d) 13b7203622 2011-02-23 kinaba: 2) (arc-.lzh sn) 13b7203622 2011-02-23 kinaba: 3) (arc.cab lf) 13b7203622 2011-02-23 kinaba: 4) (arc+.txt ln) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: はそれぞれどうなるでしょう? 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (list[r|\*|\*.*] [slfn]) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 圧縮時に、ファイル名リストを返します。 13b7203622 2011-02-23 kinaba: slfn は (arc) と同じ。デフォルトは ln。 13b7203622 2011-02-23 kinaba: \* 等については、ディレクトリ名を渡すときの渡し方指定になります。 13b7203622 2011-02-23 kinaba: 例えば (listr) コマンドを使うと、ディレクトリをワイルドカードで 13b7203622 2011-02-23 kinaba: 渡さずにNoahが自力で展開してからexeに渡せます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例題。"c:\file\" の中の "かきくけこ.txt" "abcde.bmp" "xxx"(ディレクトリ) を渡す場合、 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 5) (list) 13b7203622 2011-02-23 kinaba: 6) (list\* s) 13b7203622 2011-02-23 kinaba: 7) (list\*.* lf) 13b7203622 2011-02-23 kinaba: 8) (list sf) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: はそれぞれどうなるでしょう? 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (resp A) 13b7203622 2011-02-23 kinaba: (resq A) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 引数の内容を改行で区切ってテンポラリファイルに出力し、そのテンポラリ 13b7203622 2011-02-23 kinaba: ファイルのファイル名を返します。respは、引数A内の二重引用符を消しません。 13b7203622 2011-02-23 kinaba: resqは、変数A内の二重引用符を消去します。 13b7203622 2011-02-23 kinaba: (resp@ A) とすると "@tempfilename"、(resp-o A) とすると "-otempfilename" 13b7203622 2011-02-23 kinaba: のような返し方も可能です。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 言ってしまえば、 13b7203622 2011-02-23 kinaba: (cmd -a -mz (arc.cab) (resp@ (listr))) 13b7203622 2011-02-23 kinaba: という使い方を想定しています。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 15.例題の答え ------------------------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 1) c:\programs\ 13b7203622 2011-02-23 kinaba: 2) あいう~1 13b7203622 2011-02-23 kinaba: 3) c:\programs\あいうえお.cab 13b7203622 2011-02-23 kinaba: 4) あいうえお.lzh.txt 13b7203622 2011-02-23 kinaba: 5) かきくけこ.txt abcde.bmp xxx 13b7203622 2011-02-23 kinaba: 6) かきく~1.txt abcde.bmp xxx\* 13b7203622 2011-02-23 kinaba: 7) c:\file\かきくけこ.txt c:\file\abcde.bmp c:\file\xxx\*.* 13b7203622 2011-02-23 kinaba: 8) c:\file\かきく~1.txt c:\file\abcde.bmp c:\file\xxx 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: =★ 13b7203622 2011-02-23 kinaba: =★ 第三部 13b7203622 2011-02-23 kinaba: =★ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 16.list:セクション、(scan) ----------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 前述の decode1: セクションと、今から説明する list: セクションを 13b7203622 2011-02-23 kinaba: 追加することで、外部exeを利用するタイプのb2eでも書庫内容閲覧を 13b7203622 2011-02-23 kinaba: 行えるようになります。万能ではありません。うまく行けば儲けモノ。(^^; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: list: セクションでは普通、次のfunctionを使って格納ファイル名の 13b7203622 2011-02-23 kinaba: リストを手に入れます。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (scan A B C D E command...) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: まず command... というコマンドを実行し、その出力を解析します。 13b7203622 2011-02-23 kinaba: つまり、command... にはリスト表示コマンドを書くことになります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 解析オプション A,B,C,D,E は次のような意味です。 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、 13b7203622 2011-02-23 kinaba: 先頭E文字飛ばしてファイル名として読み込み。 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 具体例を見て行きましょう。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例1)7za.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 7-Zip (A) 2.30 Beta 10 Copyright (c) 1999-2002 Igor Pavlov 2002-01-11 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Listing archive: b2e.7z 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Date Time Attr Size Compressed Name 13b7203622 2011-02-23 kinaba: ------------------- ----- ------------ ------------ ------------ 13b7203622 2011-02-23 kinaba: 2002-01-19 00:20:48 ....A 459 103732 b2e\7z.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 11:39:38 ....A 212 0 b2e\bh.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 00:37:34 ....A 193 0 b2e\bix.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 12:04:52 ....A 200 0 b2e\j.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 00:19:46 ....A 215 0 b2e\rk.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 12:04:32 ....A 231 0 b2e\sbc.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 00:54:16 ....A 199 0 b2e\uha.b2e 13b7203622 2011-02-23 kinaba: 2002-01-19 12:10:44 ....A 426044 0 Noah.exe 13b7203622 2011-02-23 kinaba: ------------------- ----- ------------ ------------ ------------ 13b7203622 2011-02-23 kinaba: 427753 103732 8 files 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: "---"で始まる行の1行後ろから、"---"で始まる行の直前まで1行ずつ読み、 13b7203622 2011-02-23 kinaba: 先頭53文字飛ばして、残りがファイル名となっています。従って、b2eの書き方は 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: list: 13b7203622 2011-02-23 kinaba: (scan "---" 1 "---" 1 53 l (arc)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: となります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例2)imp.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: IMP 1.12 High-Performance Archiver. Copyright 1998-2000 Technelysium Pty Ltd. 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Name/Comment 13b7203622 2011-02-23 kinaba: Size Created Modified Attr OS Unit 13b7203622 2011-02-23 kinaba: ---------- ------------------- ------------------- ----- ----- --------- 13b7203622 2011-02-23 kinaba: b2e\j.b2e 13b7203622 2011-02-23 kinaba: 196 Jan 19 2002 12:22am Jan 19 2002 12:12pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\uha.b2e 13b7203622 2011-02-23 kinaba: 199 Jan 19 2002 12:38am Jan 19 2002 12:54am A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\bix.b2e 13b7203622 2011-02-23 kinaba: 195 Jan 19 2002 12:34am Jan 19 2002 12:12pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\bh.b2e 13b7203622 2011-02-23 kinaba: 214 Jan 19 2002 12:58am Jan 19 2002 12:13pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\7z.b2e 13b7203622 2011-02-23 kinaba: 461 Jan 18 2002 06:11pm Jan 19 2002 12:12pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\sbc.b2e 13b7203622 2011-02-23 kinaba: 233 Jan 19 2002 11:52am Jan 19 2002 12:14pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\rk.b2e 13b7203622 2011-02-23 kinaba: 217 Nov 26 2001 09:52am Jan 19 2002 12:13pm A.... Win32 1 13b7203622 2011-02-23 kinaba: b2e\imp.b2e 13b7203622 2011-02-23 kinaba: 235 Jan 19 2002 12:21pm Jan 19 2002 12:24pm A.... Win32 1 13b7203622 2011-02-23 kinaba: Noah.exe 13b7203622 2011-02-23 kinaba: 426044 Nov 25 2001 10:08pm Jan 19 2002 12:19pm A.... Win32 1 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Total: 427994 bytes in 9 files 13b7203622 2011-02-23 kinaba: Compressed size: 104730 bytes (24% of original) 13b7203622 2011-02-23 kinaba: Newest file modified Jan 19 2002 12:24pm 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: "---"で始まる行の1行後ろから、空行の直前まで2行ずつ読み、 13b7203622 2011-02-23 kinaba: 先頭0文字飛ばしたところがファイル名となっています。従って、b2eの書き方は 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: list: 13b7203622 2011-02-23 kinaba: (scan "---" 1 "" 2 0 v (arc)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Eは「先頭E文字飛ばして」の意味と書きましたが、これでは不十分な場合があります。 13b7203622 2011-02-23 kinaba: ファイル名が右揃えになっていて、左端が一定ではない場合など。このようなときには、 13b7203622 2011-02-23 kinaba: 「頭から○番目の固まり」という形で指定したくなります。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 例3)sbc.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト 13b7203622 2011-02-23 kinaba: ョョ SBC v0.910 beta Copyright (c) 2000-2001 Sami J. M・inen (sjm@pp.inet.fi) ッッ 13b7203622 2011-02-23 kinaba: UNREGISTERED VERSION! Evaluate 30 days, then please register! See the docs! 13b7203622 2011-02-23 kinaba: トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト 13b7203622 2011-02-23 kinaba: Listing archive: "b2e.SBC"... 13b7203622 2011-02-23 kinaba: Filename Size Date Time Attr. 13b7203622 2011-02-23 kinaba: -------- ---- ---- ---- ----- 13b7203622 2011-02-23 kinaba: b2e/j.b2e 199 01/19/2002 00:33:16 A 13b7203622 2011-02-23 kinaba: b2e/uha.b2e 199 01/19/2002 00:54:16 A 13b7203622 2011-02-23 kinaba: b2e/bix.b2e 193 01/19/2002 00:37:34 A 13b7203622 2011-02-23 kinaba: b2e/7z.b2e 459 01/19/2002 00:20:48 A 13b7203622 2011-02-23 kinaba: b2e/rk.b2e 215 01/19/2002 00:19:46 A 13b7203622 2011-02-23 kinaba: b2e/bh.b2e 212 01/19/2002 11:39:38 A 13b7203622 2011-02-23 kinaba: b2e/sbc.b2e 210 01/19/2002 11:59:50 A 13b7203622 2011-02-23 kinaba: Noah.ilk 807600 01/19/2002 00:17:50 A 13b7203622 2011-02-23 kinaba: UNACEV2.DLL 75264 12/27/2001 02:00:00 A 13b7203622 2011-02-23 kinaba: Noah.exe 426044 01/19/2002 00:17:52 A 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Archive contains 10 files, 1310595 bytes of original data. 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: " --------"で始まる行の1行後ろから、空行の直前まで 13b7203622 2011-02-23 kinaba: 1行ずつ読み、先頭から1つ目の固まりがファイル名です。というわけで 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: list: 13b7203622 2011-02-23 kinaba: (scan " --------" 1 "" 1 -1 l (arc)) 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: となります。ブロック単位で指定したいときは、マイナスをつけて指定します。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (scan A B C D E command...) 13b7203622 2011-02-23 kinaba: Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、 13b7203622 2011-02-23 kinaba: 先頭E文字飛ばしてファイル名として読み込み。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 特別な仕様。 13b7203622 2011-02-23 kinaba: Aを "" にした場合、「先頭からB行目」から読むようになります。 13b7203622 2011-02-23 kinaba: 「""で始まる行のB行後ろから」ではなくて。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: Cを "" にした場合、「空行の直前まで」になります。 13b7203622 2011-02-23 kinaba: 「""で始まる行(どんな行にも当てはまってしまう)まで」ではなくて。 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: (xscan A B C D E command...) 13b7203622 2011-02-23 kinaba: Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、 13b7203622 2011-02-23 kinaba: 先頭E文字飛ばしてファイル名として読み込み。 13b7203622 2011-02-23 kinaba: command... の一個目に、外部実行ファイルを指定します。