[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 178
  • Last Modified:

determine if file changed

I am trying to create a file backup, but only want to overwrite files that have changed
How can i do this without using FSO ?
0
isnoend2001
Asked:
isnoend2001
2 Solutions
 
aikimarkCommented:
you could use the file attribute to determine if the file has been modified and needs archiving.  to see this most easily, issue the following command:
DIR /AA

with XCOPY, this is the /A flag

========================
you can use the VB DIR() function to retrieve file names in a directory.  then you would concatenate the directory name and the file name as a parameter to the VB GetAttr() function.  see snippet example

Note:  If using the VB FileCopy statement, you will need to use the SetAttr statement to indicate you've created a backup.

strFilename = Dir(strPath & "*.*", vbNormal)
Do Until Len(strFilename) = 0
  FName = strPath & strFilename
  lngHasChanged = GetAttr(FName) And vbArchive
  If lngHasChanged = vbArchive Then
    ' create file backup
  End If
  strFilename = Dir
Loop

Open in new window

0
 
David LeeCommented:
Hi, isnoend2001.

You can use WMI.  A query like the one below will return all files that have their archive bit set.
On Error Resume Next
 
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
 
arrComputers = Array(".")
For Each strComputer In arrComputers
   WScript.Echo
   WScript.Echo "=========================================="
   WScript.Echo "Computer: " & strComputer
   WScript.Echo "=========================================="
 
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile WHERE Archive='True'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
 
   For Each objItem In colItems
      WScript.Echo "AccessMask: " & objItem.AccessMask
      WScript.Echo "Archive: " & objItem.Archive
      WScript.Echo "Caption: " & objItem.Caption
      WScript.Echo "Compressed: " & objItem.Compressed
      WScript.Echo "CompressionMethod: " & objItem.CompressionMethod
      WScript.Echo "CreationClassName: " & objItem.CreationClassName
      WScript.Echo "CreationDate: " & WMIDateStringToDate(objItem.CreationDate)
      WScript.Echo "CSCreationClassName: " & objItem.CSCreationClassName
      WScript.Echo "CSName: " & objItem.CSName
      WScript.Echo "Description: " & objItem.Description
      WScript.Echo "Drive: " & objItem.Drive
      WScript.Echo "EightDotThreeFileName: " & objItem.EightDotThreeFileName
      WScript.Echo "Encrypted: " & objItem.Encrypted
      WScript.Echo "EncryptionMethod: " & objItem.EncryptionMethod
      WScript.Echo "Extension: " & objItem.Extension
      WScript.Echo "FileName: " & objItem.FileName
      WScript.Echo "FileSize: " & objItem.FileSize
      WScript.Echo "FileType: " & objItem.FileType
      WScript.Echo "FSCreationClassName: " & objItem.FSCreationClassName
      WScript.Echo "FSName: " & objItem.FSName
      WScript.Echo "Hidden: " & objItem.Hidden
      WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate)
      WScript.Echo "InUseCount: " & objItem.InUseCount
      WScript.Echo "LastAccessed: " & WMIDateStringToDate(objItem.LastAccessed)
      WScript.Echo "LastModified: " & WMIDateStringToDate(objItem.LastModified)
      WScript.Echo "Manufacturer: " & objItem.Manufacturer
      WScript.Echo "Name: " & objItem.Name
      WScript.Echo "Path: " & objItem.Path
      WScript.Echo "Readable: " & objItem.Readable
      WScript.Echo "Status: " & objItem.Status
      WScript.Echo "System: " & objItem.System
      WScript.Echo "Version: " & objItem.Version
      WScript.Echo "Writeable: " & objItem.Writeable
      WScript.Echo
   Next
Next

Open in new window

0
 
isnoend2001Author Commented:
Thanks guys
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now