Artifact bc1665b745683ac3647eca488eb764253558ac40
1
2 =★ B2E(Bridge To Executables) Script 仕様書
3 =★ 2010/10/14
4 =★ k.inaba ( http://www.kmonos.net/ )
5
6
7
8 1.概要 ------------------------------------------------------
9
10 Noahは、定義ファイルを追加することで他のexeのフロントエンド
11 となることが出来ます。つまり、「コマンドライン用の圧縮解凍ソ
12 フトは面倒!」と思ったら、Noahと連携させて簡単なGUIで操作が
13 できるようになるわけです。
14
15 定義ファイルは、Noah.exeと同じ階層のb2eフォルダに入れること
16 で自動で認識されます。以下ではこの定義ファイルの書き方を解説
17 していきます。
18
19
20
21 2.ファイル名 ------------------------------------------------
22
23 ・拡張子は b2e
24 ・ファイル名に対応拡張子を記述
25
26 ex) 拡張子ishとuueとuuを展開可能にするためのスクリプトなら
27 ish.uue.uu.b2e
28 ex) となります。zzを展開するためのモノなら、単に
29 zz.b2e
30 ex) ですね。圧縮しか行わない場合は出来れば、
31 #rar.b2e
32 ex) のように、頭に # を付けて下さい。(必須ではありません)
33
34
35
36 3.サンプル -------------------------------------------------------
37
38 | load:
39 | (name Rar.exe)
40 | (type rar Fast Default *Best)
41 |
42 | encode:
43 | (if (method 1) (cmd a -m1 -r0 (arc.rar) (list\*.*)))
44 | (if (method 2) (cmd a -m3 -r0 (arc.rar) (list\*.*)))
45 | (if (method 3) (cmd a -m5 -mm -r0 (arc.rar) (list\*.*)))
46 |
47 | sfx:
48 | (cmd s (arc))
49
50 | load:
51 | (name 777.exe)
52 | (type 777 777)
53 |
54 | encode:
55 | (if (method 1) (cmd a (arc.777) (list\*) -mg))
56 |
57 | decode:
58 | (cmd x (arc))
59
60
61
62 4.構造 ------------------------------------------------------
63
64 ・load: EXE名などを書く部分
65 ・decode: 解凍コマンドを書く部分
66 ・encode: 圧縮コマンドを書く部分
67 ・sfx: 書庫→SFX変換コマンドを書く部分
68
69 の4セクションに分かれます。
70
71
72
73 5.load: -----------------------------------------------------
74
75 | load:
76 | (name EXE名)
77 | (type 圧縮形式名 圧縮レベル名1 圧縮レベル名2 ...)
78
79 と書きます。圧縮を行わない時は、type の文は書かなくてOK。
80 ※ 圧縮レベル名の頭に * を付けると、それが標準圧縮レベルになります。
81
82
83
84 6.decode: ---------------------------------------------------
85
86 | decode:
87 | (cmd 実行するコマンド)
88
89 コマンド中の以下の文字列については自動で置き換えられます。
90
91 (arc) … 解凍する書庫名
92 (dir) … 解凍先フォルダ名
93 (arc-.xx ln) … 書庫名から拡張子.xxを除いたもの
94
95
96
97 7.encode: ---------------------------------------------------
98
99 | encode:
100 | (if (method 1) (cmd 圧縮レベル1のときのコマンド))
101 | (if (method 2) (cmd 圧縮レベル2のときのコマンド))
102 | 以下同様
103
104 自動置き換えは以下の通り。
105
106 (arc.xxx) … 圧縮先書庫名(拡張子xxx)
107 (dir) … 圧縮したいファイルのあるフォルダ名
108 (arc d) … 圧縮先フォルダ名
109 (list) … 圧縮したいファイルのリスト
110 (list\*) … 圧縮したいファイルのリスト
111 (list\*.*) … 圧縮したいファイルのリスト
112 { ↑フォルダ名を渡すときに使うワイルドカードが違います }
113 { それぞれ、"dir" "dir\*" "dir\*.*" という形式を使います }
114 { どれを使えばよいやらわからなかったら、とりあえず }
115 { (list\*) と書いておいてください。 }
116
117
118
119 8.sfx: ------------------------------------------------------
120
121 | sfx:
122 | (cmd 書庫からSFXへ変換するコマンド)
123
124 自動置き換えは以下の通り。
125
126 (arc) … 元書庫名
127 (arc.exe) … SFX書庫名
128 (dir) … 作業フォルダ名
129
130
131
132 9.encode1: sfxd: --------------------------------------------
133
134 書庫化機能がない圧縮ソフトやテキストエンコーダなど、圧縮時
135 には一つしかファイルを受け取らないソフトがあります。このよう
136 なソフトに対応するときは、encode: の代わりに、encode1: と
137 書いておいてください。そうすればNoah側で適当にうまいこと処理
138 します。
139
140 書庫→SFX変換機能がなく、直接一気にSFXに圧縮するしかない
141 ソフトもあります。そんなときには sfx: の代わりに sfxd: を
142 使います。SFX圧縮時にはNoahは直接 sfxd: を使うようになります。
143
144 encode1: も sfxd: も、自動置き換えは encode: と全く同じです。
145
146
147
148 10.休憩 -------------------------------------------------------
149
150 さっぱりわからないぃ〜状態の人は、実際に完成したファイルを
151 眺めてみると、頭が整理されるかもしれません。
152
153 http://b2efile.tripod.co.jp/
154 ( yc氏のサイト。100個以上のb2eが公開されています。 )
155
156 仕様書なんてこんな固いもん見てもわかるか!状態の人は、
157 実際どんな手順で書いていけばよいか、を解説したサイトが
158 きっと役に立つことでしょう。
159
160 http://homepage3.nifty.com/scriba/manu/
161 ( SB氏のサイトの一角。Noah付属のものよりずっと丁寧な
162 マニュアルとなっています。 )
163
164
165 さて、ここから下は、結構内容が濃いです。知らなくても普通に
166 b2eを書く分には全く困らない知識ばっかりです。(^^;
167 それでも読んでみたい奇特な人だけどうぞ……
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189 =★
190 =★ 第二部
191 =★
192
193
194
195 11.英語モードでexeを実行する技 -------------------------------
196
197 日本語版WindowsのDOS窓で動かすと、なんだか ロロロロン と出てきて
198 格好悪かったり、最悪の場合全く動かない…というアーカイバに
199 出会ったことはありませんか?
200 これらは、"usモード" に切り替えてから実行すると上手く動く
201 ことが多いです。Noahでこの切り替えを行うには、最初の name で、
202
203 (name EXE名 us)
204
205 と、後ろに us を付けて下さい。これで、そのb2eに書かれた(cmd)や
206 (xcmd)の実行の際には、自動でusモードになるようになります。
207
208
209
210 12.統合アーカイバDLL用スクリプト -----------------------------
211
212 load: のところで (name DLL名) とすればOKですが、それだと
213 ・ファイル内容による書庫判定
214 ・書庫閲覧&部分解凍
215 が出来ません。致命的です。
216
217 前者を有効にするには、
218 check:
219 って一行どこかに書いてください。中身は要りません。
220
221 後者を有効にするには、decode1: セクションを書きます。
222 自動置き換えは decode: セクションと同じものに加え、
223 (list) と書くとそこに解凍ファイル名リストが入るようになります。
224 decode1: セクションでは、出来るだけグラフやエラーメッセージを
225 抑止するようなオプションをつけて cmd して下さい。
226
227 DLL名からAPI名を算出するため、大文字小文字は間違えないように。
228 基本的には[最初一文字大、あと小]で大丈夫ですが、UnZip は Z も
229 大文字に。UnGCA も要注意。
230
231 また、元々Noahに内蔵されているルーチンはb2eより優先されるため、
232 ただb2eファイルを追加しただけでは、例えばUnlha32.dll用の動作を
233 置き換えることは出来ません。noah.ini ファイルに次の形式で
234 隠し設定を記述することで、内蔵ルーチンを使わないようにできます。
235
236 Kill=使いたくない内蔵ルーチン
237
238 例えば Kill=LCT なら、Unlha32,Cab32,Tar32 を使用しなくなります。
239 L … Unlha32 Z … UnZip32 z … Zip32j
240 R … Unrar32 C … Cab32 T … Tar32
241 B … Bga32 G … UnGCA32 A … Unarj32j
242 a … UnaceV2 Y … Yz1 c … Cpt
243 7 … 7-zip32 M … MS-Compress
244
245
246
247 13.大量のb2eを入れると ---------------------------------------
248
249 バージョン情報の表示が遅くなる環境があるそうです。
250 そんな場合は Noah.ini ファイルに
251 OldAbout=1
252 と一行付け加えてください。
253
254
255
256 14. As a Script Language --------------------------------------
257
258 上でさんざん[自動置き換え]として (arc) とかを紹介しましたが、
259 気分的には全然違います。( 機能名 引数1 引数2 ... ) の形の
260 functionをひたすら組み合わせて書く、Lispのまがい物のような
261 スクリプト言語のつもり。
262
263 例 (+ 25 8) = 33
264 (* 3 7) = 21
265 (+ 11 (* 3 4)) = 23
266
267 こんな感じで計算もできます。+ だったら一個目の数と二個目の数を
268 足した結果を返す[関数]と考えられるのと同様、(arc) も、適当な
269 オプションをとって書庫名を返す[関数]として実装しています。
270
271 ====================================================
272 ◇変数処理
273
274 変数名はアルファベット一文字、a-z, A-Z の52個が使えます。
275
276 例 (let a 25)
277 (let b 10)
278 (+ %a %b)
279
280 最後の足し算の計算結果は 35 になります。
281 letで変数に値を代入して、%変数名、で入れた値を取り出せます。
282
283 例 (let d (arc d))
284 (cmd a -d%d (list\*.*))
285
286 変数には文字列も入るので、上のような使い方も可能です。
287
288 ====================================================
289 ◇使うときに注意が必要な文字
290
291 送りたいコマンドや圧縮レベル名などに %"() の4種類の字を
292 そのまま書くとバグります。
293 それぞれ %%, %", %(, %) というように前に % を付けて下さい。
294
295 ====================================================
296 ◇全functionリファレンス
297
298 ★実行制御系
299
300 (exec ...)
301
302 機能:左から順に、単純に引数を実行していく
303 返値:最後の引数の値
304
305 (if A B C)
306
307 機能:Aが真ならBを実行。Cがある場合,Aが偽ならCを実行
308 返値:実行した方の文(BかC)の値
309
310 (while A B)
311
312 機能:Aが真である間、Bを繰り返し実行
313 返値:無し
314
315 ★代入系
316
317 (let A B)
318
319 機能:変数Aに、Bを代入。
320 ※Aには、変数名から%を除いた文字が入る。
321 返値:Aに入った値
322
323 ★演算系
324
325 ( + A B) … A+B
326 ( - A B) … A−B
327 ( * A B) … A×B
328 ( / A B) … A÷B
329 (mod A B) … AをBで割った余り
330
331 ( = A B) … AとBが等しければ真、等しくなければ偽
332 ( ! A B) … AとBが等しければ偽、等しくなければ真
333 ( ! A) … Aが偽なら、真なら偽
334 ( < A B) … A < B なら真、でなければ偽
335 ( > A B) … A > B なら真、でなければ偽
336 (between A B C) … A <= B <= C なら真、それ以外なら偽
337
338 ( + A B) … A or B (足し算は、論理和にも使えます)
339 ( * A B) … A and B(掛け算は、論理積にも使えます)
340
341 ★load: 系
342
343 (name A)
344 (type A B C D ...)
345
346 上の説明通り。
347
348 (use A B C D ...)
349
350 そのb2eで、nameで指定したexe以外に利用するファイルがあるなら
351 このuseによって設定します。例えば
352 ex) (use sfx32gui.dat zcrypt23.dll)
353 などと書いておくと、Noahのバージョン情報に、sfx32gui.datなどが
354 表示されるようになります。ただし、ここに書いたからと言って
355 実際の圧縮解凍作業に変化はありません。
356
357 ★その他のセクションで使えるもの(単純)
358
359 (dir)
360
361 基準フォルダ名を「ショートファイル名・フルパス」で返します。
362 decode:中は解凍先、encode:中は圧縮元 sfx:中は作業ディレクトリ
363 をたぶん返します。
364
365 (is_folder)
366
367 ドロップされたものがフォルダ一つだったら真、でなければ偽。
368
369 (is_file)
370
371 ドロップされたものがファイル一つだったら真、でなければ偽。
372
373 (is_multiple)
374
375 ドロップされたものが複数だったら真、でなければ偽。
376
377 (cd A)
378
379 カレントディレクトリをAに設定します。
380
381 (method A)
382
383 encode: encode1: sfxd: の時のみ意味があります。
384 単に (method) と書くと、ユーザーが指定した圧縮レベルを返します。
385 (method 1) などと書くと、指定したレベルが 1 かどうかの真偽を返します。
386
387 (size A)
388
389 ファイルAのサイズをバイト単位で返します。
390
391 (slash A)
392
393 文字列Aの中の \ を / に置き換えた文字列を返します。
394 Unix系のコマンドで \ をディレクトリと認識してくれないもの向けに。
395
396 (find A)
397
398 名前がAのファイルをPATHの通ったディレクトリから探し、
399 見つかったらフルパス、見つからなければ偽を返します。
400 ex) (if (find notepad.exe) (....))
401 notepad.exeがある時だけ何か実行。
402 ex) (let s (find stubwin.sfx)) (cmd s %s (arc))
403 stubwin.sfxをシステムフォルダなどから探してきてsにそのフルパスを入れる。
404
405 (cmd ARG1 ARG2 ARG3 ...)
406
407 (name)で指定した実行ファイルへコマンドを送ります。
408 上では(arc)は自動置き換え…とか書きましたが、
409 functionを使っているので当然の如く
410 (cmd ##(arc)##)
411 とかやっても ##c:\windows\install.cab## というコマンドが送られたりはしません。
412 つまり、スペースで離された一パラメータの場合しか置き換えは効かないわけです。
413 そうでない置き換えをしたいときには、(let) で一旦変数に代入してから
414 変数名を埋め込めばOKです。
415 (cmd)命令自体の値は、実行の終了コードとなります。
416 ex) (if (! 0 (cmd ...)) エラー処理)
417 xcmdについても同様。
418
419 (xcmd A ARG1 ARG2 ...)
420
421 外部コマンド呼び出し。
422 最初に実行ファイル名を書いて、以降のパラメータでコマンドを書きます。
423 (xcmd del A) とか (xcmd copy B C) など、DOSの内部コマンドの起動も可能。
424
425 ★その他のセクションで使えるもの(複雑)
426
427 (input MESSAGE DEFAULT)
428
429 ユーザーに文字列を入力させるときに使います。入力を促すメッセージを
430 第一引数に、デフォルトの入力値を第二引数に書いて下さい(省略可能)。
431 入力された文字列が値として返されます。
432 (let p (input "パスワードを入れてね"))
433 (cmd x -p%p (arc))
434 とかそんな感じに利用。
435
436 (arc[+-].ext [slfnd])
437
438 書庫名指定。Noah は内部変数として、
439 ・書庫のあるフォルダ名 <-- 書庫の存在するDir(解SFX) or 出力先Dir(圧)
440 ・書庫名(LongFileName) <-- 書庫名(解SFX) or dropした一個目のファイル名(圧)
441 ・書庫名(ShortFileName) <-- 書庫名(解SFX) or dropした一個目のファイル名(圧)
442 を持っています。
443
444 まず右の[slfnd]は置いといて左の部分を解説。
445
446 (arc … 書庫名をそのままストレートに
447 (arc. … 書庫名から拡張子を全て除いたもの
448 (arc.lzh … 書庫名から拡張子を全て除いて、.lzh につけかえたもの
449 (arc+.lzh … 書庫名の拡張子は取らず、後ろに .lzh をくっつけたもの
450 (arc-.szip … szipという拡張子だったらそれをとりのぞいたもの、
451 # そうでなかったら、後ろに .decompressed をくっつけたもの
452
453 それぞれ
454 ===解凍・SFX変換時の書庫名指定
455 ===CPShrink対策 (--;)
456 ===圧縮時の普通の書庫名指定
457 ===aaa.txt を圧縮するとき書庫名を aaa.txt.gz にしたいとき便利
458 ===aaa.txt.gz を解凍するとき名前を aaa.txt に戻したいとき便利
459 です。
460
461 次、[slfnd] の解説。1番目のパラメータにこれらの文字があると、
462 s … 書庫名にはShortFileNameを使う
463 l … 書庫名にはLongFileNameを使う
464 f … 書庫名はディレクトリ+名前(FullPath)で。
465 n … 書庫名は名前(NameOnly)で。
466 d … 書庫名はディレクトリ(Direcotry)で。
467 という指定になります。
468
469 s === 短いファイル名しか通さないアーカイバに便利。
470 d === 書庫名を直接指定できないで、出力先しか指定できないものに便利。
471
472 デフォルトオプション( 単に (arc) と書いたときのオプション )は、
473 decode: lf
474 encode: lf
475 sfx: ln
476
477 例題。書庫名が "c:\programs\あいうえお.lzh" の場合、
478
479 1) (arc d)
480 2) (arc-.lzh sn)
481 3) (arc.cab lf)
482 4) (arc+.txt ln)
483
484 はそれぞれどうなるでしょう?
485
486 (list[r|\*|\*.*] [slfn])
487
488 圧縮時に、ファイル名リストを返します。
489 slfn は (arc) と同じ。デフォルトは ln。
490 \* 等については、ディレクトリ名を渡すときの渡し方指定になります。
491 例えば (listr) コマンドを使うと、ディレクトリをワイルドカードで
492 渡さずにNoahが自力で展開してからexeに渡せます。
493
494 例題。"c:\file\" の中の "かきくけこ.txt" "abcde.bmp" "xxx"(ディレクトリ) を渡す場合、
495
496 5) (list)
497 6) (list\* s)
498 7) (list\*.* lf)
499 8) (list sf)
500
501 はそれぞれどうなるでしょう?
502
503 (resp A)
504 (resq A)
505
506 引数の内容を改行で区切ってテンポラリファイルに出力し、そのテンポラリ
507 ファイルのファイル名を返します。respは、引数A内の二重引用符を消しません。
508 resqは、変数A内の二重引用符を消去します。
509 (resp@ A) とすると "@tempfilename"、(resp-o A) とすると "-otempfilename"
510 のような返し方も可能です。
511
512 言ってしまえば、
513 (cmd -a -mz (arc.cab) (resp@ (listr)))
514 という使い方を想定しています。
515
516
517
518 15.例題の答え -------------------------------------------------
519
520 1) c:\programs\
521 2) あいう~1
522 3) c:\programs\あいうえお.cab
523 4) あいうえお.lzh.txt
524 5) かきくけこ.txt abcde.bmp xxx
525 6) かきく~1.txt abcde.bmp xxx\*
526 7) c:\file\かきくけこ.txt c:\file\abcde.bmp c:\file\xxx\*.*
527 8) c:\file\かきく~1.txt c:\file\abcde.bmp c:\file\xxx
528
529
530
531
532
533
534
535
536
537
538 =★
539 =★ 第三部
540 =★
541
542 16.list:セクション、(scan) -----------------------------------
543
544 前述の decode1: セクションと、今から説明する list: セクションを
545 追加することで、外部exeを利用するタイプのb2eでも書庫内容閲覧を
546 行えるようになります。万能ではありません。うまく行けば儲けモノ。(^^;
547
548 list: セクションでは普通、次のfunctionを使って格納ファイル名の
549 リストを手に入れます。
550
551 (scan A B C D E command...)
552
553 まず command... というコマンドを実行し、その出力を解析します。
554 つまり、command... にはリスト表示コマンドを書くことになります。
555
556 解析オプション A,B,C,D,E は次のような意味です。
557 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
558 Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、
559 先頭E文字飛ばしてファイル名として読み込み。
560 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
561
562 具体例を見て行きましょう。
563
564
565
566
567 例1)7za.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++
568
569 7-Zip (A) 2.30 Beta 10 Copyright (c) 1999-2002 Igor Pavlov 2002-01-11
570
571 Listing archive: b2e.7z
572
573 Date Time Attr Size Compressed Name
574 ------------------- ----- ------------ ------------ ------------
575 2002-01-19 00:20:48 ....A 459 103732 b2e\7z.b2e
576 2002-01-19 11:39:38 ....A 212 0 b2e\bh.b2e
577 2002-01-19 00:37:34 ....A 193 0 b2e\bix.b2e
578 2002-01-19 12:04:52 ....A 200 0 b2e\j.b2e
579 2002-01-19 00:19:46 ....A 215 0 b2e\rk.b2e
580 2002-01-19 12:04:32 ....A 231 0 b2e\sbc.b2e
581 2002-01-19 00:54:16 ....A 199 0 b2e\uha.b2e
582 2002-01-19 12:10:44 ....A 426044 0 Noah.exe
583 ------------------- ----- ------------ ------------ ------------
584 427753 103732 8 files
585
586 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
587
588 "---"で始まる行の1行後ろから、"---"で始まる行の直前まで1行ずつ読み、
589 先頭53文字飛ばして、残りがファイル名となっています。従って、b2eの書き方は
590
591 list:
592 (scan "---" 1 "---" 1 53 l (arc))
593
594 となります。
595
596 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
597
598
599
600 例2)imp.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++
601
602 IMP 1.12 High-Performance Archiver. Copyright 1998-2000 Technelysium Pty Ltd.
603
604 Name/Comment
605 Size Created Modified Attr OS Unit
606 ---------- ------------------- ------------------- ----- ----- ---------
607 b2e\j.b2e
608 196 Jan 19 2002 12:22am Jan 19 2002 12:12pm A.... Win32 1
609 b2e\uha.b2e
610 199 Jan 19 2002 12:38am Jan 19 2002 12:54am A.... Win32 1
611 b2e\bix.b2e
612 195 Jan 19 2002 12:34am Jan 19 2002 12:12pm A.... Win32 1
613 b2e\bh.b2e
614 214 Jan 19 2002 12:58am Jan 19 2002 12:13pm A.... Win32 1
615 b2e\7z.b2e
616 461 Jan 18 2002 06:11pm Jan 19 2002 12:12pm A.... Win32 1
617 b2e\sbc.b2e
618 233 Jan 19 2002 11:52am Jan 19 2002 12:14pm A.... Win32 1
619 b2e\rk.b2e
620 217 Nov 26 2001 09:52am Jan 19 2002 12:13pm A.... Win32 1
621 b2e\imp.b2e
622 235 Jan 19 2002 12:21pm Jan 19 2002 12:24pm A.... Win32 1
623 Noah.exe
624 426044 Nov 25 2001 10:08pm Jan 19 2002 12:19pm A.... Win32 1
625
626 Total: 427994 bytes in 9 files
627 Compressed size: 104730 bytes (24% of original)
628 Newest file modified Jan 19 2002 12:24pm
629
630 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
631
632 "---"で始まる行の1行後ろから、空行の直前まで2行ずつ読み、
633 先頭0文字飛ばしたところがファイル名となっています。従って、b2eの書き方は
634
635 list:
636 (scan "---" 1 "" 2 0 v (arc))
637
638 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
639
640
641
642 Eは「先頭E文字飛ばして」の意味と書きましたが、これでは不十分な場合があります。
643 ファイル名が右揃えになっていて、左端が一定ではない場合など。このようなときには、
644 「頭から○番目の固まり」という形で指定したくなります。
645
646
647
648 例3)sbc.exe の出力結果 ++++++++++++++++++++++++++++++++++++++++++++++++++++
649
650 トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
651 ョョ SBC v0.910 beta Copyright (c) 2000-2001 Sami J. M・inen (sjm@pp.inet.fi) ッッ
652 UNREGISTERED VERSION! Evaluate 30 days, then please register! See the docs!
653 トトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトトト
654 Listing archive: "b2e.SBC"...
655 Filename Size Date Time Attr.
656 -------- ---- ---- ---- -----
657 b2e/j.b2e 199 01/19/2002 00:33:16 A
658 b2e/uha.b2e 199 01/19/2002 00:54:16 A
659 b2e/bix.b2e 193 01/19/2002 00:37:34 A
660 b2e/7z.b2e 459 01/19/2002 00:20:48 A
661 b2e/rk.b2e 215 01/19/2002 00:19:46 A
662 b2e/bh.b2e 212 01/19/2002 11:39:38 A
663 b2e/sbc.b2e 210 01/19/2002 11:59:50 A
664 Noah.ilk 807600 01/19/2002 00:17:50 A
665 UNACEV2.DLL 75264 12/27/2001 02:00:00 A
666 Noah.exe 426044 01/19/2002 00:17:52 A
667
668 Archive contains 10 files, 1310595 bytes of original data.
669
670 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
671
672 " --------"で始まる行の1行後ろから、空行の直前まで
673 1行ずつ読み、先頭から1つ目の固まりがファイル名です。というわけで
674
675 list:
676 (scan " --------" 1 "" 1 -1 l (arc))
677
678 となります。ブロック単位で指定したいときは、マイナスをつけて指定します。
679
680 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
681
682
683 (scan A B C D E command...)
684 Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、
685 先頭E文字飛ばしてファイル名として読み込み。
686
687 特別な仕様。
688 Aを "" にした場合、「先頭からB行目」から読むようになります。
689 「""で始まる行のB行後ろから」ではなくて。
690
691 Cを "" にした場合、「空行の直前まで」になります。
692 「""で始まる行(どんな行にも当てはまってしまう)まで」ではなくて。
693
694 (xscan A B C D E command...)
695 Aで始まる行の B行後ろから Cで始まる行の直前まで D行ずつ読み、
696 先頭E文字飛ばしてファイル名として読み込み。
697 command... の一個目に、外部実行ファイルを指定します。