Sign in to follow this  
Followers 0
GregThompson

How tough would this be?

5 posts in this topic

Here's what I would like to do, I want to overcome the MS "feature" that links the system clock to all files/folders on a machine. So, we just had a time change in the US, and all my files on the servers are now +1 hour, however all the SAME files on a USB key are still the same as before the time change since the usb key has no system clock. So, when I compare the files with Robocopy, you guessed it, every folder/file is seen different and a full sync must occur. I want to reset all the files on either the keys, or the servers, probably the servers since only 2 of them exist and I have 3 dozen keys. I found some apps that can do this, but you have to buy them, not happening and I want more control of this.

How can I do this in AutoIT? I know you can query a single file with FileGetTime, and you can also set with FileSetTime, the problem is I have to do this on 1000's of files and folders... I found a vb script:

Set objShell = _
  CreateObject("Shell.Application")

Set objFolder = _
  objShell.NameSpace("f:\")
Set colItems = objFolder.Items

For Each objItem In colItems
    objItem.ModifyDate  = _
      "01/01/2008 8:00:00 AM"
Next

But it won't do folders or recurse files/folders in sub-folders... so I know this is POSSIBLE, but I can't for the life of me figure this out.

Ideally I provide a path, and a plus or minus value, like -1, and the script goes and changes everything behind the scenes.

Any help would be greatly appreciated.

Share this post


Link to post
Share on other sites



Oh, and in PowerShell, I found this script that will update all files with a specific incremental time for the modified time, but it's also setting the date/time based on the $a variable... I just want to read all files/folders and increment X number of hours plus or minus... so close...!!!!

$a = Get-Date "2/13/2007 8:00 AM"

$b = Get-ChildItem "C:\Scripts"

foreach ($i in $b)
{
    $i.LastWriteTime = $a
    $a = $a.AddMinutes(1)   
}

$b

Share this post


Link to post
Share on other sites

@GregThompson...Try this with some a test folder with some files first...

#Include <File.au3>
#Include <Array.au3>
#Include <Date.au3>

$Folder=@ScriptDir & "\Change"
$FileList=_FileListToArray($Folder)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit

Else
;_ArrayDisplay($FileList,"$FileList")


For $x=1 to $FileList[0]


$t =  FileGetTime($Folder & "\" & $FileList[$x], 0)
$Old_Date=$t[0] & "/" & $t[1] & "/" & $t[2] & " " & $t[3] & ":" & $t[4] & ":" & $t[5]

$New_Date=StringStripWS(StringReplace(StringReplace(_DateAdd("h", 1, $Old_Date),"/",""),":",""),8)

;MsgBox(4096,"",$New_Date)
FileSetTime($Folder & "\" & $FileList[$x], $New_Date,0)

Next

EndIf

Share this post


Link to post
Share on other sites

@GregThompson...Try this with some a test folder with some files first...

#Include <File.au3>
#Include <Array.au3>
#Include <Date.au3>

$Folder=@ScriptDir & "\Change"
$FileList=_FileListToArray($Folder)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit

Else
;_ArrayDisplay($FileList,"$FileList")


For $x=1 to $FileList[0]


$t =  FileGetTime($Folder & "\" & $FileList[$x], 0)
$Old_Date=$t[0] & "/" & $t[1] & "/" & $t[2] & " " & $t[3] & ":" & $t[4] & ":" & $t[5]

$New_Date=StringStripWS(StringReplace(StringReplace(_DateAdd("h", 1, $Old_Date),"/",""),":",""),8)

;MsgBox(4096,"",$New_Date)
FileSetTime($Folder & "\" & $FileList[$x], $New_Date,0)

Next

EndIf

DJD, it works great, the only problem is that it doesn't recurse sub-directories... thanks though.

Share this post


Link to post
Share on other sites

RunWait(@ComSpec & " /c dir /b /s > c:\windows.txt", "c:\", @SW_HIDE)
_FileReadToArray("c:\windows.txt",$FileList)

With that minor change, I got it... WOOT, thanks man!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0