昨日のJSファイルをさらしてみる
はじめに
昨日「スクリプト作ったで―」とどや顔で書いて、書き終わってから「クリップボード履歴ソフト使えばいいんじゃね?」と気づいたkomorebikoboshiです。
まあ、書いちゃったものは仕方ないよね。せめて日記のネタにしようということでそのJScriptをさらしてみる。
ここからコード
ほんとに初歩的なことしかしてないけど。
var fso = WScript.CreateObject("Scripting.FileSystemObject"); var wshell = WScript.CreateObject("WScript.Shell"); var html = ['<html>','<head>','<script>','','</script>','</head>','<body>','','</body>','</html>']; var editor = 'C:\\Tools\\Mery\\Mery.exe'; //普段テキストエディターはMeryを使っています。 var MakeFileName = function(){ var filename = ""; var filecount = 0; do { filecount++; filename = 'JavascriptStudy' + filecount + '.html'; } while(fso.FileExists(filename)); return filename; }; var filename = MakeFileName(); //この辺からわからないことあり var textstream = fso.CreateTextFile(filename); for (var i =0;i < html.length;i++){ textstream.WriteLine(html[i]); } textstream.Close(); wshell.Run(editor + ' ' + filename);
例外処理書いてないね。ちょっと悩んでいる。
FAQ*1
Q.どうやって使うの?
A.適当な場所において実行すると「JavascriptStudy1.html」「JavascriptStudy2.html」……とかってファイルができる。で、エディターで開かれる。作業フォルダー次第ではとんでもない所にファイルが作られる。
Q.DOCTYPE宣言は?なんかいろいろ足りなくない?
A.練習用です(キリッ)。できるだけ省きました。まあHTMLタグもBODYタグも省けますが。別に本格的な書式にしてもよかった気がします。書き込むのはスクリプトだし。
Q.TITLEタグないよ?
A.練しゅ(略。できる(略。ファイル名をあとで変更する可能性があると思ったのであえてTITLEは空白で。いや、練習用だからファイル名変えないって?うーん。
Q.一行ずつ書き込まなくても改行文字使ってひとつの文字列にして書き込めば?
A.個人的に改行文字にトラウマがあって、可能な限りシステムに任せるようにしている。
Q.Mery?
A.kuroさん製作のテキストエディターです。
404 Not Found
Q.Meryいいよね?
A.Meryいいよね!
わからないこと
CreateTextFileあたりから。どのように例外処理を書くものやら
try { var textstream = fso.CreateTextFile(filename); for (var i =0;i < html.length;i++){ textstream.WriteLine(html[i]); } } catch(e) { WScript.Echo(e); textstream.Close(); WScript.Quit(1); } textstream.Close(); wshell.Run(editor + ' ' + filename);
こんな感じで書けばいいのか。でもテキストストリームを作るところでエラーになったらオブジェクトができてないからCloseできないんじゃないか、とか。
あと、ファイルへ書き込み段階でエラーが出たときに中途半端にファイルが出来上がるけど、それをどうにかしたい。DeleteFileするしかない?
おわりに
なんというか、すごく恥ずかしい。周りにはいくらでもいいコードがあふれているのに、ねえ。でもいつか、気軽に公開できるようになれば、新たな更新ネタをゲットできる!よし、たくさん書いて羞恥心を削り落とそう。
*1:5/28追記 よく考えたらFAQじゃなくて普通にQ&Aて書くべきだよね