--------------------- 第7話 肥大化が止まらない --------------------------
はじまり、はじまり~。
<ったくぅ。言うに事欠いて、完成しているなどと、嘘は許しませんですの!>
でも、事実ですのぉ。
<それなら、証拠を見せていただけます?>
そうだね。実際に50個ほどのpdfファイルのあるフォルダで試してみよう。ポチットな。
<えっ? ええ~~! か、完璧じゃないですか!>
<信じらんない。コノ動き! だってすぐにファイルを作り始めたわよね。>
ああ、ファイル結合の方が遥かに長いね。
<本当に結合されてるの?コレ?>
一つ開けてみようか。ホレ。
<ちゃんと繋がってるわ。 全く要求通りよね。>
カレントでなきゃ3行は短くなったのにな。
<3行くらい何よ。 だって何百行ってあるんでしょ?>
そうだね。最初は200行以上あったな。正直「肥大化が止まらない」状態だった。
<そうでしょ。そうでしょ。アンタは偉い! アタシはもっとかかると思ってた>
<よく200行以内に収めたわね。ソレにしてもアンタにしては長いの書いたわよね>
<ソノ努力に免じて、呼び方をLiners様に戻してあ・げ・る。>
ナンなのソレ?
<アタシ、焦らされるの嫌いなの。スグにスクリプト見せて。>
いいよ。ハイ!
<あの~Linersさまぁ? お忘れ物がありますの。>
何?
<何じゃありませんですの! コノ後の180行ほどが貼り付け忘れですの!>
コレだけだよ。
<またご冗談を・・・コンナ見かけない初期設定で誤魔化せられませんの!>
どうして?
<ど、どうしてって。コレ通常の配列宣言はないし、当然あるべき2重ループもないし、>
<しかも、ループの中身は1行とか多くてもたったの4行だし、if文だって3つだし・・・>
<冗談にもホドがありますの! コレでアノ複雑な処理が出来るハズありませんの!>
<ひょっとして、アタシが初心者なのでナメてませんか?>
ません。
<大体たった20行で実質何が出来ると言うの? 単なる貼り付け忘れじゃないですの?>
忘れているのはアンタだよ。
<何がですの?>
3行。
<へ? 実質17行だって言うの? ・・・もう怒るわよ!>
アングリ!
<冗談言ってる場合ですか!!・・・ひょっとして冗談言っているのはこのアタシ?>
うん♪
<う、ウソぉ~。 うっそでしょうぉ~~!! ゴン・ゴン・ゴンッ。 バタッ!!>
何故コケル?
<あ"っだ・・アタシ今、目の前で何かの魔法を見ているのかしら?>
----------------------------------------------------------------------
提供は:マジック・スクリプト。Linersでした。
----------------------------------------------------------------------
// 実行にはパスの変更とconcatPDFのインストールが必要
dir = "C:Documents and SettingsLinersデスクトップtest" // ディレクトリ
Ws = CREATEOLEOBJ("WScript.Shell")
Ws.CurrentDirectory = dir // カレント変更 concatPDFの為
hashtbl h
base = GETDIR_FILES[resize(GETDIR_FILES, getdir(dir ,"*.pdf")) * 0]
for i = 0 to length(GETDIR_FILES) -2
str = match(base, GETDIR_FILES[i + 1])
if str <> "" and base = GETDIR_FILES[i] then base = str + ".pdf"
h[base] = h[base] + GETDIR_FILES[i] + " "
if str = "" or (base <> GETDIR_FILES[i] and base <> str + ".pdf") then base = GETDIR_FILES[i + 1]
next
for i = 0 to length(h) -1
doscmd("<#dbl>C:Program FilesConcatPDFconcatPDF.exe<#dbl> /outfile " + h[i, HASH_KEY] + " " + h[i, HASH_VAL])
next
function match(s1, s2)
if pos(s1, s2) = 1 or s1 ="" then result = s1 else result = match(copy(s1, 1, length(s1)-1), s2)
fend