「スタートアップ」に,仕事をさせよう (朝,出社するだけで仕事が進む仕組み作り)
あなたは毎朝,会社で,マシンの電源を入れる。
そのあと,いつも定型の作業をしていないか?
- メーラを立ち上げて,特定の受信フォルダを読む。
- ブラウザを立ち上げて,タイムカードの記録とかをする。
- 作業フォルダを開いて,右クリックし,SVNなどのリポジトリを最新化する。
- 前日のプロジェクトの進捗を確かめ,バグが生まれていないかあちこち確認する。
- 今日の作業のTODOを確認するために,プロジェクトの管理情報を開く。
これらは毎朝お決まりの雑用かもしれない。
そのあとで,ようやく本来の作業を始められる。
その頃には,少し疲れ始めているのではないか。*1
出社時の定型作業は,スタートアップのカスタマイズによって自動化してしまおう。
そうすれば,毎朝,PCの電源を入れるだけで,仕事が進むことになる。
Windowsのスタートアップメニューに,独自のバッチを登録しておけばいい。
(1)スタートアップ処理バッチ
スタートアップで実行したい処理を記述する。
このバッチの中に全部書き込んで編集+管理するようにすれば,いちいちWindowsのスタートアップメニューをいじらなくて済む。
好きなフォルダに置いておく。
my_startup.bat
@rem このバッチが存在するディレクトリをカレントにする cd /d %0\.. @rem DB初期化(回帰テスト実行用) start /MIN cmd /c D:\dev\scripts\DBセットアップ.bat @rem 開発用フォルダを開く start explorer D:\dev\project\src\ @rem SVNリポジトリを更新 start /DD:\dev\project\ TortoiseProc.exe /command:update /path:. /closeonend:0 @rem IEで特定のサイトを開く start iexplore http://www.google.co.jp/webhp?hl=ja @rem firefoxで特定のサイトを開く start firefox http://www.google.co.jp/webhp?hl=ja @rem メーラーで特定のメールフォルダを開く start outlook /select outlook:受信トレイ\作業日報 @rem ガントチャートを開く copy /Y D:\dev\project\document\スケジュール.xls D:\tmp\スケジュール.xls D:\tmp\スケジュール.xls @rem ローカルで回帰テストを開始 start cmd /c D:\dev\回帰テスト実行.bat @rem 共有フォルダに接続 net use z: /delete net use z: \\192.168.1.1\hoge /user:ユーザ名 パスワード
人によっては,このバッチの中に・・・
- 前日に発生した出来事を何かしらグラフ化・見える化とかして,きょうの作業の指針とする
などなど,様々な「やりたい事」を詰め込むことができるだろう。アイデア次第。
(続く作業に対するやる気を出せるようなものを書いておくのが良い。)
参考:
コマンドラインからプロセスを起動・終了する方法 (環境変数とレジストリについて)
http://language-and-engineering.hatenablog.jp/entry/20081028/1225160338
- startコマンドの意味
- PATHだけでなくレジストリも探索する
- 別プロセスとして起動する
- 呼び出し先が終了する前に,別タスクを進めることができる
- 呼び出し先が終了した時に,呼び出し元も強制終了させられなくて済む
- start cmd /c バッチ処理 とすれば,呼び出し先のバッチ処理終了時に,自動的に呼び出し先のcmdが終了してくれる
JavaScript をコマンドラインで実行する方法 (mshta.exeの使い方)
http://language-and-engineering.hatenablog.jp/entry/20081023/1224678990
Outlookの起動オプション一覧表(コマンドラインスイッチ)
http://office.microsoft.com/ja-jp/out...
- ※selectオプションに関する警告:http://support.microsoft.com/kb/823923/ja
(2)有効化バッチ
これを実行すると,前項のバッチが,スタートアップに登録される。
my_startup有効化.js
var ws = WScript.CreateObject("WScript.Shell"); // ショートカットを作成 var shortcut = ws.CreateShortCut("C:\\Documents and Settings\\ユーザ名\\スタート メニュー\\プログラム\\スタートアップ\\my_startup.bat へのショートカット.lnk"); shortcut.TargetPath = "D:\dev\scripts\my_startup.bat"; shortcut.Save(); WScript.Echo("作成しました。");
参考:
WSH(VBScript)でショートカット作成
http://www1.u-netsurf.ne.jp/~tomo_c/t...
なお,Vistaの場合はショートカット作成パスが異なる。
var shortcut = ws.CreateShortCut("C:\\Users\\ユーザ名\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\my_startup.bat へのショートカット.lnk");
(3)無効化バッチ
これを実行すると,スタートアップに登録されている特定のバッチを,スタートアップから削除する。
my_startup無効化.bat
@rem ショートカットを削除 @del "C:\Documents and Settings\ユーザ名\スタート メニュー\プログラム\スタートアップ\my_startup.bat へのショートカット.lnk" echo 削除しました。 @pause
一応,このような削除バッチも用意しておく。
「ちょっと用事で再起動」という時に,再起動後いちいちスタートアップスクリプトが実行されるのは面倒だから。
そういう時はいったん削除スクリプトを走らせてから,再起動し,その後,(2)の登録バッチを実行し直す。
コメント
一度作っておけば,出社や毎朝の仕事始めの時間帯に対して,モチベーションを保ちやすいのでは。
追記
「スタートアップ」に仕事をさせよう の補足: 共有フォルダ上の作業
http://language-and-engineering.hatenablog.jp/entry/20101005/p1
補足(2012/10)
スタートアップが実行されたあとで,バッチを実行しているコマンドプロンプトのウィンドウが閉じてくれない場合がある。
exitコマンドが記述されているにもかかわらず,その行でCUIが停止して無反応になってしまい,DOS窓が終了せずに残ったままになる。
この現象は,Firefox 16をコマンドプロンプトから起動した場合に発生する問題らしい。
Windows 7上で再現した。
Firefox 16 spamming Console (Mac) Bug?
http://forums.mozillazine.org/viewtop...
- Same issue on Windows with standard FF 16.0.1, where FF is started from a batch file.
Unidentifiable output
http://jpsoft.com/forums/threads/unid...
- If I do not start Firefox this way, and do a ctrl-c to stop the console output, it closes FireFox.
- If you start Firefox from TCC (or CMD.EXE), then as long as that instance of Firefox remains open, EXIT may not close the console window.
スタートアップバッチのexit行の後で,下記のようなログが出力され,DOS窓が閉じてくれなかった。
D:\settings\startup>exit OS Determining best projection for type int (size: 4 ) signed OS Projected as a regular number OS Determining best projection for type unsigned_int (size: 4 ) unsigned OS Projected as a regular number OS Determining best projection for type long (size: 4 ) signed OS Projected as a regular number OS Determining best projection for type int (size: 4 ) signed OS Projected as a regular number OS Determining best projection for type int (size: 4 ) signed OS Projected as a regular number OS Determining best projection for type off_t (size: 4 ) signed OS Projected as a large signed integer OS Determining best projection for type size_t (size: 4 ) unsigned OS Projected as a large unsigned integer OS Determining best projection for type ssize_t (size: 4 ) signed OS Projected as a large signed integer OS Attempting to declare FFI CopyFileW OS Function CopyFileW declared OS Attempting to declare FFI CreateFileW OS Function CreateFileW declared OS Attempting to declare FFI DeleteFileW OS Function DeleteFileW declared OS Attempting to declare FFI FileTimeToSystemTime OS Function FileTimeToSystemTime declared OS Attempting to declare FFI FindFirstFileW OS Function FindFirstFileW declared OS Attempting to declare FFI FindNextFileW OS Function FindNextFileW declared OS Attempting to declare FFI FormatMessageW OS Function FormatMessageW declared OS Attempting to declare FFI GetCurrentDirectoryW OS Function GetCurrentDirectoryW declared OS Attempting to declare FFI MoveFileExW OS Function MoveFileExW declared OS Attempting to declare FFI ReadFile OS Function ReadFile declared OS Attempting to declare FFI RemoveDirectoryW OS Function RemoveDirectoryW declared OS Attempting to declare FFI SetCurrentDirectoryW OS Function SetCurrentDirectoryW declared OS Attempting to declare FFI SetEndOfFile OS Function SetEndOfFile declared OS Attempting to declare FFI SetFilePointer OS Function SetFilePointer declared OS Attempting to declare FFI WriteFile OS Function WriteFile declared
*1:逆に「雑用によって頭が働いて来る」という場合もある。しかし,あなたはロボットやバッチではないのだから,こういった定型作業ではなく,もっと有意義で知性が求められる作業に対してリソースを使う事が可能なのでは。