スポンサーリンク

「スタートアップ」に,仕事をさせよう (朝,出社するだけで仕事が進む仕組み作り)

あなたは毎朝,会社で,マシンの電源を入れる。


そのあと,いつも定型の作業をしていないか?

  • メーラを立ち上げて,特定の受信フォルダを読む。
  • ブラウザを立ち上げて,タイムカードの記録とかをする。
  • 作業フォルダを開いて,右クリックし,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...

(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:逆に「雑用によって頭が働いて来る」という場合もある。しかし,あなたはロボットやバッチではないのだから,こういった定型作業ではなく,もっと有意義で知性が求められる作業に対してリソースを使う事が可能なのでは。