まず持ってから

「もちつもたれつ」「ギブアンドテイク」でもいいんだけどまず”もって”から、つーことで

今年の目標

2009年01月02日 22時58分57秒 | 生活
新年あけましておめでとうございます。

今年の目標は「Windowsを真面目に勉強しよう」かなぁ・・・
いままで、仕事で使うから”なんとなく”推測で使ってきたけど、いろいろ推測してきたネタがおぼろげながらつながってきたからここらで真面目に勉強してみよう。

とりあえず、今年最初のプログラムはファイルの更新時間を右クリックから更新するプログラムをVBScriptで。
フォルダの中のファイルの更新日時も一緒に更新したいので再帰的に動かしたい。
cygwinの touch.exe を使ってやるのがお手軽かな?


Option Explicit

  Dim objWshShell
  Dim objFSO

  set objWshShell = WScript.CreateObject("WScript.Shell")

  if Wscript.Arguments.count = 0 then
   wscript.quit
  end if

  set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

  Dim i
  For i = 0 To WScript.Arguments.Count-1
   call FileTouch(WScript.Arguments(i))
  Next


Sub FileTouch(byVal inName)

  if objFSO.FileExists(inName) = true then
   call objWshShell.Run("C:\cygwin\bin\touch.exe '" & inName & "'", 0)
   exit sub
  end if

  if objFSO.FolderExists(inName) = true then
   Dim objFolder
   Dim f

   call objWshShell.Run("C:\cygwin\bin\touch.exe '" & inName & "'", 0)

   set objFolder = objFSO.GetFolder(inName)
   for each f in objFolder.Files
    Call FileTouch(f.Path)
   Next

   for each f in objFolder.SubFolders
    Call FileTouch(f.Path)
   Next

   exit sub
  end if

End Sub

これを touch_r.vbs に保存して、C:\Documents and Settings\qshinya\SendTo に保存。これで”右クリック→送る”からファイル/フォルダを指定すれば更新日時を変更できる。一発目はこんなもんか。