Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

Script kiddyさんが色んな人の悩みをスクリプトで解決していく様はまさに痛快。関係のない無駄話も彼の魅力の一つです。

※注
これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。

公開日:2008.05.19

クールガイになりたい

Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

今日のお便りは恋する18歳さんからです。 「Script kiddyさん、こんにちは。助けてください。彼女から『今更バッチファイルなんてダサい』と言われました。どうにかしてモテる管理者になれないでしょうか?」

恋する18歳さん、こんにちは。Script kiddyの父親は今自分で鉄道写真を撮ってScript kiddyが立てたサーバにアップロードしています。Pukiwikiで文書も書いて、とてもきれいにメンテナンスしています。でもどうでしょうか。彼は写真の一覧を10枚毎に分割するために、ページ番号の割り当てをはじめ全部手作業で一覧をメンテナンスしているのです。Script Kiddyはその姿に涙し、そのダサい環境を改善することを心に誓いました。 そして3ヶ月が経ちました。でもまだ彼は手で一覧をメンテナンスしています。なぜなら、Script KiddyはPHPがわからないからです。誰か良いCMSを紹介してください。

さて、質問に移りましょう。 Script Kiddyはバッチファイルがダサいだなんて、これっぽっちも思いません。ビンテージのジーンズを履くように、エレガントに着こなしましょう。(本物のScripting Guysは絶対にVBSで片付けてしまいますが。)

01: @echo off
02: FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET Today=%%A_%%B_%%C
03: output_log.exe > R:\archive\log_%Today%.txt

上のコードは、日付コマンドから不要なデリミタ文字を取り除いてファイル名に割り当てています。

sleepだってお手の物です。

01: @echo off
02: ping -n 60 127.0.0.1 >nul

これでバッチファイルは1分間休止します。

下は昔ラリーウォール(※1)が「俺んちのバッチはすげーんだぜ」と言って見せてくれたバッチファイルです。

01: @rem = '__PERL__
02: 
03: @echo off
04: set PATH=%PATH%;C:\perl\bin
05: 
06: perl %0
07: 
08: goto END
09: 
10: __PERL__
11: 
12: rem ';
13: 
14: $a="Welcome to perl world!!";
15: 
16: print $a;
17: 
18: __END__
19: 
20: :END

途中でちょっとバッチファイルじゃない様な気がしますが、これもバッチファイルとして動きます。何故かPerlのインストレーションが無いとエラーが出ます。でもスクリプトファンはそんな細かい事は気にしないのです。 いかがでしたでしょうか。これであなたの彼女も見直してくれると思います。 ではScript kiddyは父親への言い訳を考えつつ寝ることにします。

※1 Larry WallはPerlの生みの親です。当然Script kiddyにバッチファイルを見せてくれた事も、会った事もありません


※注 これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。 ご意見、ご要望はお問い合わせよりお願いします。