2012/02/17(金)システム回復オプション

 Windows7のデスクトップが起動しなくなった。いや、起動はするが、画面が真っ暗なままでマウスのポインタだけが表示されている。前夜、Windows Updateをして終了し、朝になって起動しようとしたら、こうなった。以前からグラフィックドライバのエラーは時々あって、それが原因ではないかと思う。セーフモードでは起動するが、システムの復元をやってみてもダメだった(この時点ではシステム回復オプションについて知らなかった)。通常起動して電源スイッチで終了を繰り返しているうちに、セーフモードですら起動できなくなった。

 再起動したら、起動の選択肢に通常起動のほか、システム回復ツールというのが出てきた(起動時にF8キーを連打すれば、出てくる。出てこない場合もあるそうだ)。これをやってみる。システム回復オプションには、「スタートアップ修復」、「システムの復元」、「システムイメージの回復」、「Windowsメモリ診断」、「コマンドプロンプト」がある。Dellのコンピュータには最後に「DELL Datasafe復元と緊急バックアップ」が追加されている。最後のやつはいわゆるリカバリで、これをやると、購入時の環境には戻せても、直前の使える環境に戻すまでにはソフトを再インストールしたり、設定を変えたりで平気で2、3日はかかる(経験談(^^ゞ)。これだけは避けたい。

 スタートアップ修復は時間はかかったのにまったく修復できない。2回やったがダメ。システムの復元もやっぱり復元できずにエラーになった。ふーむ。システムイメージの回復がダメなら、リカバリしかない。システムイメージの回復に関しては「システム イメージ バックアップからコンピューターを復元する」を参照。要するにバックアップしていたシステムイメージをリストアすることで、コンピュータをバックアップした時点の構成に復元することができるわけだ。バックアップ日時を見てみたら、幸い前日の午前7時と新しかった。これで復元できるなら、余計な手間がない。

 システムイメージをコピーし直すのでそれなりに時間がかかったが、再起動したら無事に起動して元の環境に戻った。やれやれ。僕のパソコンのCドライブは1テラバイト。システムイメージの作成には数百GB程度のハードディスク領域が必要になる。バックアップは昨年、2テラバイトの内蔵HDDを増設した際に設定した。やっておいて良かったとしみじみ思った。

 Windows95のころのバックアップはほとんど役に立たなかった記憶があるが、大容量のHDDが手頃な価格で手に入る今、バックアップの設定はやっておくべきなのだろう。スケジュールを決めれば、定期的に自動でやってくれるので、普段は意識する必要もないのだから。

2005/02/27(日)きょう作成したファイルをコピーするVBS

画像ファイルをコピーする時にはバッチファイルを使っていたが、VBSで書くと、こんな感じか。「Windows Script Hostハンドブック」を参考にした。画像だけでなく、すべてのファイルが対象。

'jpgcopy.vbs
Set Obj = CreateObject("Scripting.fileSystemObject")
Set JpgFldr = Obj.GetFolder("C:\homepage\photo\")
count = 0
  For Each F In JpgFldr.Files
    If InStr(CStr(F.DateCreated),CStr(Date)) = 1 Then
      F.Copy "D:\homepage2\photo\"
      count = count + 1
    End If
  Next
If count = 0 Then
  MsgBox "今日作成したファイルはありません。"
else
  MsgBox "今日作成したファイルを" & count & "個コピーしました。"
End If

VBSは実行するたびにウィルスソフトが反応する。ノートン・アンチウィルスの場合はスクリプトを書き換えたら、別のスクリプトと解釈するためか、警告のダイアログが頻繁。VBSで実行されるウィルスが多いので仕方がないが、そういう意味では使いにくいスクリプトだな。

2004/10/28(木)自動で名前を付けて保存するマクロ

秀丸で編集中のファイルに名前を付けて保存するのが面倒な時、自動で名前を付けて保存するマクロを考えてみた。日付をファイル名にすることも考えたが、紙2001のようにファイルの先頭にある文字列(先頭から半角16文字。全角だと8文字)でファイル名を付けると、ファイルの内容が分かるので便利だろう。

//autosave.mac
$dir = "C:\\temp";
if(basename == ""){
  gofiletop;
  replacedown "\n","",regular;
  #result = result;
  selectline;
  $text = gettext(seltopx,seltopy,selendx,selendy);
  if(#result == 1){undo;}
  if($text == ""){
    message "このファイルには何も書かれていません。\n保存できません。";
    endmacro;
  }else{
  #text = strlen($text);
  if(#text % 2 != 0){
    $text ="1" + $text;}
  $basename = leftstr($text,16);
  $filename = $dir + "\\" + $basename + ".txt";
  saveas $filename;
  }
}
endmacro;

先頭から16バイトまでに半角と全角が混じった文章で半角が奇数個の場合、拡張子.txtの付いたファイル名が付けられない。具体的には“「デビルマン」”というタイトルが1行目にあると、“「デビルマン・txt”と、ピリオド“.”ではなく、全角のナカテン“・”が付いたファイル名になってしまう。が7バイトなので、16バイト目の文字の半角分だけ取ろうとするからだ。仕方がないので、そういう場合は先頭に半角の1を付け加えて半角文字が偶数になるようにした。

一昨日書いたtDiary入力補助マクロの最初の部分に付け加えると吉か。ただし、日記によくあるリンクになっているタイトルの場合はファイル保存ができない。<&lta href="http;//…なんていう文字列はファイル名には使えませんね。ここを改良する必要があります。

で、そういう場合は日付+時間をファイル名にすることにした(いい加減な対応)。結局、サブルーチンを入れて長くなってしまった。改良版はautosave.mac.txtを参照。

秀丸ホームページのマクロライブラリを見てみたら、同じ趣旨のマクロが既に登録してあった。名前を付けて保存マクロ改。やっぱりね。内容か日付かでファイルを保存するところまで同じ。ま、僕のマクロはtDiary用ということで。