ragemxf Posted September 15, 2005 Share Posted September 15, 2005 I am trying to get a script that will first: search all c: for .pst and .pab then I want it to copy resulted files to a network location.... this is basically a backup script for when I am changing out 30 pc's at a time... Is this even possible? Neal Smith Link to comment Share on other sites More sharing options...
BigDod Posted September 15, 2005 Share Posted September 15, 2005 I am trying to get a script that will first: search all c: for .pst and .pabthen I want it to copy resulted files to a network location....this is basically a backup script for when I am changing out 30 pc's at a time...Is this even possible?Neal Smith<{POST_SNAPBACK}>You have already seen the answer in Scrips and Scraps Time you enjoyed wasting is not wasted time ......T.S. Elliot Suspense is worse than disappointment................Robert Burns God help the man who won't help himself, because no-one else will...........My Grandmother Link to comment Share on other sites More sharing options...
Doppio Posted June 1, 2007 Share Posted June 1, 2007 I have being looking for the same thing for more than 5 hours, but can't find anything like it. Does anyone know the link to a script that would do that? Link to comment Share on other sites More sharing options...
Zedna Posted June 1, 2007 Share Posted June 1, 2007 I have being looking for the same thing for more than 5 hours, but can't find anything like it.Does anyone know the link to a script that would do that?I don't know link for backup scriptsbut look into Autoit Helpfile at these functions:FileCopy()_FileListToArray() - no recurseFor recurse searching search forum for:_FileSearch()_FileListToArrayEx() Resources UDF Â ResourcesEx UDF Â AutoIt Forum Search Link to comment Share on other sites More sharing options...
JSunn Posted June 1, 2007 Share Posted June 1, 2007 (edited) Try this- it should write a log of what is backed up as well.. CODE#include <file.au3> #include <array.au3> #include <date.au3> Dim $FileList[1], $backupdest, $Searchdest, $log ;Backup Destination (dont forget trailing backslash) $backupdest = "C:\backuptest\" ;Search dest (no trailing backslash) $Searchdest = "C:" _ArrayInsert($FileList, 1, "These files were backed up on " & _Now()) $log = Search($Searchdest) ;Write a log. FileWrite($backupdest & "backuplog.log", $log) Exit Func Search($current) Local $search = FileFindFirstFile($current & "\*.*") While 1 Dim $file = FileFindNextFile($search) If @error Or StringLen($file) < 1 Then ExitLoop ;Add pst / pab files to the array and backup If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") And StringRight($file, 3) = "pst" or StringRight($file, 3) = "pab" Then _ArrayAdd($FileList,$current & "\" & $file) FileCopy($current & "\" & $file, $backupdest & $file) EndIf If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then Search($current & "\" & $file) EndIf WEnd FileClose($search) $string = _ArrayToString($FileList, @CR) $string = StringReplace($String, @CR, @CRLF) Return($string) EndFunc -John Edited June 1, 2007 by JSunn Link to comment Share on other sites More sharing options...
Doppio Posted June 1, 2007 Share Posted June 1, 2007 Thank you, just one more request if possible, My HD has two partitions, D and E how can I extend the search to those two drives? Link to comment Share on other sites More sharing options...
Zedna Posted June 1, 2007 Share Posted June 1, 2007 Thank you, just one more request if possible, My HD has two partitions, D and E how can I extend the search to those two drives? Call your search function twice (so you will have two arrays) and merge two output arrays. $array1 = SomeSearch('C:\*.*') $array2 = SomeSearch('D:\*.*') ; merge arrary1 and array2 using standard array UDF _ArrayAdd() ; ... Resources UDF Â ResourcesEx UDF Â AutoIt Forum Search Link to comment Share on other sites More sharing options...
Doppio Posted June 1, 2007 Share Posted June 1, 2007 I haven't work with arrays too much, can you show me how to do it? Link to comment Share on other sites More sharing options...
JSunn Posted June 1, 2007 Share Posted June 1, 2007 Call your search function twice (so you will have two arrays) and merge two output arrays. $array1 = SomeSearch('C:\*.*') $array2 = SomeSearch('D:\*.*') ; merge arrary1 and array2 using standard array UDF _ArrayAdd() ; ... Here is a modified script.. read the code comments to understand. Previously I was writing all the files into an array and then writing that to a log file to a backup log. I removed the array and replaced it with the _FileWriteLog function. one thing to keep in mind.. This is not a full backup solution. There is no date modified checking to see which file is newer. If the file already exists in the destination then it will NOT be copied. You can figure out how to add this feature yourself Im sure. CODE#include <file.au3> #include <array.au3> #include <date.au3> Dim $FileList[1], $backupdest, $Searchdest, $log ;Backup Destination (dont forget trailing backslash) $backupdest = "C:\backuptest\" ;Write Search([driveletter or folder]) to be searched for files. Search("C:") Search("D:") Search("E:") Exit Func Search($current) Local $search = FileFindFirstFile($current & "\*.*") While 1 Dim $file = FileFindNextFile($search) If @error Or StringLen($file) < 1 Then ExitLoop ;Add pst / pab files to the array and backup If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") and Not StringInStr($current & "\" & $file, $backupdest) And ($file <> "." Or $file <> "..") And StringRight($file, 3) = "pst" or StringRight($file, 3) = "pab" Then $result = FileCopy($current & "\" & $file, $backupdest & $file) ;Write to log file. Keep in mind many files cannot be copied if they are the same name but different versions because they are ;all being copied into the destination. If $result = 1 Then _FileWriteLog($backupdest & "backuplog.log", "BACKUP SUCCESS: " & $current & "\" & $file) Else _FileWriteLog($backupdest & "backuplog.log", "BACKUP FAILURE: " & $current & "\" & $file) Endif EndIf If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") AND StringInStr($current & "\" & $file, $backupdest) = 0 Then Search($current & "\" & $file) EndIf WEnd FileClose($search) EndFunc Link to comment Share on other sites More sharing options...
Doppio Posted June 1, 2007 Share Posted June 1, 2007 Yes I can, Thank you for teaching me. Link to comment Share on other sites More sharing options...
JSunn Posted June 1, 2007 Share Posted June 1, 2007 Yes I can, Thank you for teaching me.You are welcome. For date / time comparison you might want to use FileGetTime("C:\backupfile.txt", 1, 1) and compare it to FileGetTime("C:\destfile.txt", 1, 1) - this coverts the date / time into an number that can be added or subtracted to see which one is newer, etc... I am interested in seeing what you come up with. Link to comment Share on other sites More sharing options...
Doppio Posted June 1, 2007 Share Posted June 1, 2007 I'll post the final code latter, something just ocurred to me, what if there's a directory I want to exclude from my search, how can I do that? For example if I'm looking for PDF documents, I don't want to look in the programs directory, becouse most programs create a help or how to guide in PDF format, I could get a lot of unnecesary hits if I don't exclude it. Any help or pointers please. Link to comment Share on other sites More sharing options...
JSunn Posted June 1, 2007 Share Posted June 1, 2007 I'll post the final code latter, something just ocurred to me, what if there's a directory I want to exclude from my search, how can I do that?For example if I'm looking for PDF documents, I don't want to look in the programs directory, becouse most programs create a help or how to guide in PDF format, I could get a lot of unnecesary hits if I don't exclude it.Any help or pointers please.Instead of adding exclusions, I suggest you limit your search. For example, the pst and pab files you are looking to backup usually exist somewhere in a users profile under C:\Document and Settings\username\.. Try limiting your search to a specific parent folder. To do that you just change it fromSearch("C:")to Search("C:\Documents and Settings")remember you can search as many different folders as you likeexample:Search("C:\Documents and Settings")Search("C:\WIndows")Search(C:\Temp")Hope this helps Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now