動機
やることが決まってくるといつも開くのが決まってきます。そこでまず楽したくなりますよね。そのために考えられる方法をいくつか考えてみました。
一つ目は開くと自動的に表示されるようにすること。ですがこれは一つしか開けなかったり、どうあがいても必ず最初に開いてしまいます。二度目からはしないという状況ではうざったいですね。
二つ目はブックマーク機能を使い、テンプレ集を作成してそれをすべて開くという方法です。この方法は良いのですが開き忘れが生じると困りますね。
三つ目はbatファイルでstart https://***
のようなコマンドを連続で並べて開かせる方法です。この方法にすると対応するリンク集毎にbatファイル(例えば漫画のリンクへのコマンドを集めたファイル)を作成するとそれを開けば目的のものをすべて開いてくれそうです。しかし、リンク集を作るのは簡単だけどいちいちstart
コマンドを最初につけるのはめんどくさくなりました。そこでリンク集からstart
をつけたコマンドを自動生成して実行する実行ファイルをHaskellで作成することにしました。
使い方
まずgithubにてwebTmp.exe
をダウンロードしてください。
次にリンク集を用意してください。例えば以下のようにします。
https://qiita.com/ogata-k
https://qiita.com/ogata-k/items/08de9637111bf61099da
https://qiita.com/ogata-k/items/ed53406a8e6010fe4a43
https://qiita.com/ogata-k/items/2b21326b2b7351bfc28c
https://qiita.com/ogata-k/items/23d70250ec42359b6bb5
https://qiita.com/ogata-k/items/874811cf1aca41bfe88e
そのファイルのパスを引数にwebTmp.exe
を実行してください。すると大量に開かれるはずです。
使い方はこれだけですが一つだけ注意してほしいところがあります。コードを簡単に書いたのでエラー処理やリンクとして正しくないときの処理を行っていません。その為上手くいかないときがあるかもしれません。(例えばファイルの中に空行があると次で説明するsystem
関数の都合上空行一つにつきコマンドプロンプトが一つ残ってしまう。)普通に使う分には問題ありません。
コード
次にコードの説明をします。コードは短いので直でここに載せます。
module Lib
( doStarts
) where
import System.Process
import Control.Monad
doStarts :: [String] -> IO ()
doStarts = mapM_ $ system . ("start " ++)
と
module Main where
import Lib
import System.Environment
import Control.Monad
main :: IO ()
main = do
fPath <- head <$> getArgs
ss <- lines <$> readFile fPath
doStarts ss
だけです。全体はgithubに載せておきます。といってもほかに重要なファイルはありません。
コードの説明をしていきます。説明といっても説明することはほとんどありません。
まずLib.hs
ファイルの説明です。
こちらは文字列のリストを分割して頭にstart
を取り付けてそれぞれを実行していきます。system
関数はSystem.Process
モジュールに入っており、文字列を受け取って実行、そして実行結果を返すという機能を持ちます。(詳しくはこちら)
次にMain.hs
ファイルの説明です。
これは与えられた引数のFilepath
を読み込んで文字列のリストとしてss
に保持し、先ほどのdoStarts
関数に丸投げします。もう一度言いますが、簡単に書いただけなので引数の妥当性のチェックやファイルの中身が正しくリンクになっているかのチェックも行っていないので注意してください。(普通に使うなら問題はないはずです。)
まとめ
いつも開くのがめんどくさくてやっつけ仕事で作ってみました。皆さんもどうぞ自己責任でお使いください。