ASP Classic でSetFileTimeなどを呼び出して、指定した時刻の日付と時刻を手動で変更したいと思います。私の知る限り、ASP ファイル オブジェクトは、ファイルの作成時刻と変更時刻を取得する方法を提供しますが、実際にそれらを設定する方法は提供しません。
どうすればこれを達成できますか?
ASP Classic でSetFileTimeなどを呼び出して、指定した時刻の日付と時刻を手動で変更したいと思います。私の知る限り、ASP ファイル オブジェクトは、ファイルの作成時刻と変更時刻を取得する方法を提供しますが、実際にそれらを設定する方法は提供しません。
どうすればこれを達成できますか?
私は比較的早く答えを見つけました:
Sub ModifyLastAccessedDate(emlFilePath, newDate)
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set file = objFSO.GetFile(emlFilePath)
Set app = Server.CreateObject("Shell.Application")
Set folder = app.NameSpace(file.ParentFolder & "\")
Set fileModify = folder.ParseName(file.Name)
fileModify.ModifyDate = NewDate
Set objFSO = Nothing
Set file = Nothing
Set folder = Nothing
Set app = Nothing
Set fileModify = Nothing
End Sub
そして、ルーチンを呼び出すだけです
Call ModifyLastAccessedDate("C:\Folder\SomeFile.Txt","2013-03-05")
以下は JScript と VB の例で、後世のためにMicrosoftから直接取得したものです (日付と時刻の文字列を設定する方法の別の例として)。
<script language="JScript">
function fnModifyDateGetSetJ()
{
var objShell = new ActiveXObject("shell.application");
var objFolder2;
var ssfWINDOWS = 36;
objFolder2 = objShell.NameSpace(ssfWINDOWS);
if (objFolder2 != null)
{
var objFolderItem;
objFolderItem = objFolder2.ParseName("NOTEPAD.EXE");
if (objFolderItem != null)
{
var szReturn;
szReturn = objFolderItem.ModifyDate;
objFolderItem.ModifyDate = "01/01/1900 6:05:00 PM";
}
}
}
</script>
VB:
Private Sub fnModifyDateGetSetVB()
Dim objShell As Shell
Dim objFolder2 As Folder2
Dim ssfWINDOWS As Long
ssfWINDOWS = 36
Set objShell = New Shell
Set objFolder2 = objShell.NameSpace(ssfWINDOWS)
If (Not objFolder2 Is Nothing) Then
Dim objFolderItem As FolderItem
Set objFolderItem = objFolder2.ParseName("NOTEPAD.EXE")
If (Not objFolderItem Is Nothing) Then
Dim szReturn As String
szReturn = objFolderItem.ModifyDate
objFolderItem.ModifyDate = "01/01/1900 6:05:00 PM"
Else
'FolderItem object returned nothing.
End If
Set objFolderItem = Nothing
Else
'Folder object returned nothing.
End If
Set objFolder2 = Nothing
Set objShell = Nothing
End Sub