「あるファイルのタイムスタンプを、別のファイルのタイムスタンプで更新したい」って時に、結構便利なんじゃないかな?ってスクリプトです。
ちなみに、変更するのは"更新時刻"のみ。
*** touch.vbs [#jcaf874e]
#ref(touch.vbs);
'
' 第2引数以降のファイルのタイムスタンプを
' 第1引数のファイルのタイムスタンプで更新する。
'
' @authoer Jomora( kazuhiko@jomura.net http://jomura.net )
' @version 2010.07.18 初版作成
'**Start Encode**
Set objArgs = WScript.Arguments.Unnamed
If objArgs.Count < 2 Then
WScript.Echo "2つ以上のファイルを指定してください。"
WScript.Quit
End If
' main
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
' タイムスタンプ取得
modifyDate = objFSO.GetFile(objArgs.Item(0)).DateLastModified
' タイムスタンプ設定
For i = 1 To objArgs.Count - 1
Set objFile = objFSO.GetFile(objArgs.Item(i))
' WScript.Echo "path:" & objFile.ParentFolder.Path & " name:" & objFile.Name
Set shellFolder = objShell.NameSpace(objFile.ParentFolder.Path)
Set shellFile = shellFolder.ParseName(objFile.Name)
shellFile.ModifyDate = modifyDate
Next
WScript.Quit
- 使い方
++ 対象のファイル(複数)を選択状態にして、そのうちの元タイムスタンプのファイルを摘んで、touch.vbsにDropする。
++ touch.vbsをコンテキストメニューの"送る"に登録しておく。対象のファイル(複数)を選択状態にして、そのうちの元タイムスタンプのファイルをtouch.vbsに"送る"。