MaCgyver Posted March 13, 2006 Share Posted March 13, 2006 I don't know if autoit can do this but this is what I want to do. Create a script that will copy a file according to the current date and copy it to another folder(server). I can copy the file(s) in this manner WWWW*.*out.FWR, but it has to be for that particular day in order to grad the new files created since the script ran last. The script will be used throughout the day as new files are created. Link to comment Share on other sites More sharing options...
Valuater Posted March 13, 2006 Share Posted March 13, 2006 idea... as a start #include <Date.au3> $t = FileGetTime(@Windowsdir & "\Notepad.exe", 1) $yyyymd = $t[0] & "/" & $t[1] & "/" & $t[2] $iDateCalc = _DateDiff( 'd',$yyyymd,_NowCalc()) If $iDateCalc > "60" Then MsgBox( 4096, "", "File moved... over 60 days old: " & $iDateCalc ) EndIf 8) Link to comment Share on other sites More sharing options...
MaCgyver Posted March 13, 2006 Author Share Posted March 13, 2006 (edited) idea... as a start #include <Date.au3> $t = FileGetTime(@Windowsdir & "\Notepad.exe", 1) $yyyymd = $t[0] & "/" & $t[1] & "/" & $t[2] $iDateCalc = _DateDiff( 'd',$yyyymd,_NowCalc()) If $iDateCalc > "60" Then MsgBox( 4096, "", "File moved... over 60 days old: " & $iDateCalc ) EndIf 8) The fileGetTime command should help me build the script. I didnt know it existed. I need something that basically copies any file that looks like WWWW*.*out.FWR, and the creation date equals today's date. Edited March 13, 2006 by MaCgyver Link to comment Share on other sites More sharing options...
skippynz Posted March 13, 2006 Share Posted March 13, 2006 The fileGetTime command should help me build the script. I didnt know it existed. I need something that basically copies any file that looks like WWWW*.*out.FWR, and the creation date equals today's date. i used the following in one of my scripts ...non relevant code up here $drive_2 = DriveMapAdd("*","\\" & $backup_server & "\c$\Program Files\CA\BrightStor ARCserve Backup\LOG\cas_user_logs\caroot",0, $username , $password ) FileChangeDir ( $drive_2 ) _RunDOS( "dir *.log /b /o-e /od > logs.txt" ) $lines = _FileCountLines( "logs.txt" ) $latest = FileReadLine( "logs.txt" , $lines ) _FileReadToArray($latest ,$backup) ... rest of script here it maps a drive to a fileserver that is using arcserve. lists the files by name and date order to a txt file then reads the name of the last file to a variable that i use for the rest of the script. simple but effective way of doing this. Link to comment Share on other sites More sharing options...
MaCgyver Posted March 13, 2006 Author Share Posted March 13, 2006 Craig I will look into what you posted. The following script obviously didn't work but can't something work along these lines? $TodayDate = __NowCalcDate() $File = ('c:\WWWW*.*out.FWR') If $TodayDate = FileGetTime('c:\WWWW*.*out.FWR'1) Then FileCopy('$File, c:\test\test') Exit EndIf Link to comment Share on other sites More sharing options...
MaCgyver Posted March 13, 2006 Author Share Posted March 13, 2006 i used the following in one of my scripts ...non relevant code up here $drive_2 = DriveMapAdd("*","\\" & $backup_server & "\c$\Program Files\CA\BrightStor ARCserve Backup\LOG\cas_user_logs\caroot",0, $username , $password ) FileChangeDir ( $drive_2 ) _RunDOS( "dir *.log /b /o-e /od > logs.txt" ) $lines = _FileCountLines( "logs.txt" ) $latest = FileReadLine( "logs.txt" , $lines ) _FileReadToArray($latest ,$backup) ... rest of script here it maps a drive to a fileserver that is using arcserve. lists the files by name and date order to a txt file then reads the name of the last file to a variable that i use for the rest of the script. simple but effective way of doing this.I think I will use what you have here. Thanks Link to comment Share on other sites More sharing options...
skippynz Posted March 13, 2006 Share Posted March 13, 2006 I think I will use what you have here. Thanksno worries - i did put it in the ideas forum for listing files by date but havent checked back in a while. Link to comment Share on other sites More sharing options...
MaCgyver Posted March 13, 2006 Author Share Posted March 13, 2006 no worries - i did put it in the ideas forum for listing files by date but havent checked back in a while.Thanks...I'm having problem with _filereadarray.I'm still pretty knew to this. Am I correct in thinking the _FileReadArray line reads the name of the file to copy and copies it the file to a dir? or does it just read and copies the name? Link to comment Share on other sites More sharing options...
Valuater Posted March 13, 2006 Share Posted March 13, 2006 i cant find "filereadarray" FileReadToArray()... reads "a" file into an array FileListToArray() lists the files in a directory to an array there is no copying performed 8) Link to comment Share on other sites More sharing options...
MaCgyver Posted March 13, 2006 Author Share Posted March 13, 2006 i cant find "filereadarray"FileReadToArray()... reads "a" file into an arrayFileListToArray() lists the files in a directory to an arraythere is no copying performed8)Thanks.....I'm going home now....when I get there i will figure out what command i need to get the correct file from the log and copy the file to the new directory. Link to comment Share on other sites More sharing options...
Valuater Posted March 13, 2006 Share Posted March 13, 2006 (edited) taken from Lesson #6 in my "Welcome to Autoit 1-2-3" expandcollapse popup; includes #include <GuiConstants.au3> #include <file.au3> ;****************** FILE LOCATION ********** $File_loc = @ScriptDir & "\" $File_type = "*.txt" ;******************************************** ; create the GUI. $win = GUICreate("File List/View Demo", 614, 370) ; set the font for the GUI GUISetFont(9, 400, -1, "MS Sans Serif") ; create buttons. $btnList = GUICtrlCreateButton("&List Files", 10, 330, 75, 25) $btnView = GUICtrlCreateButton("&View File", 85, 330, 75, 25) ; create the left list. $TutorItList = GUICtrlCreateList("", 10, 10, 150, 330) ; create the right edit. $TutorItEdit = GUICtrlCreateEdit("Please select a tutorial from the list to your left.", 175, 10, 420, 345, $ES_AUTOVSCROLL + $ES_READONLY + $ES_MULTILINE + $WS_VSCROLL) ; set the edit colors. GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetColor(-1, 0x000000) ; set focus to the edit. GUICtrlSetState($TutorItList, $GUI_FOCUS) ; show the GUI. GUISetState() ; start the loop. While 1 ; listen for a message $msg = GUIGetMsg() ; using select/case for the message Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $btnList Set_tutor() Case $msg = $btnView View_tutor() ; end the selections EndSelect WEnd ; Function to populate the left list. Func Set_tutor() $TutList = _FileListToArray ($File_loc, $File_type, 1); list files to an array. If (Not IsArray($TutList)) Or (@error = 1) Then MsgBox(262208, "Tutor Error", "No Files\Folders Found. ", 5) Return EndIf GUICtrlSetData($TutorItList, ""); set list to empty. For $x = 1 To $TutList[0]; for loop to place the files in the list. GUICtrlSetData($TutorItList, (StringTrimRight($TutList[$x], 4)) & "|", 1); string trim the last 4 characters ( .txt ) Next EndFunc ; Function to populate the right edit. Func View_tutor() $s_text = GUICtrlRead($TutorItList); read the selected file to a variable. If $s_text = "" Then Return $n_text = StringTrimLeft($File_type, 1) $s_text = $File_loc & $s_text & $n_text; set the location of the file. Dim $Tut_text If Not _FileReadToArray($s_text, $Tut_text) Then; read the file to an array. MsgBox(4096, "Tutor Error", " Error reading log to Array error:" & @error) Return EndIf GUICtrlSetData($TutorItEdit, ""); set the edit to empty. For $x = 1 To $Tut_text[0]; for loop to place the read file into the edit. GUICtrlSetData($TutorItEdit, $Tut_text[$x] & @CRLF, 1) Next EndFunc hope that helps 8) Edited March 13, 2006 by Valuater Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted March 13, 2006 Moderators Share Posted March 13, 2006 (edited) Edit:Revised it, stuck it in Scripts and Scraps: http://www.autoitscript.com/forum/index.php?showtopic=23083 Edited March 13, 2006 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
MaCgyver Posted March 14, 2006 Author Share Posted March 14, 2006 This worked out for me. Func _FileCountLines($sFilePath) Local $N = FileGetSize($sFilePath) - 1 If @error Or $N = -1 Then Return 0 Return StringLen(StringAddCR(FileRead($sFilePath, $N))) - $N + 1 EndFunc ;==>_FileCountLines Func _RunDOS($sCommand) Return RunWait(@ComSpec & " /C " & $sCommand, "", @SW_HIDE) EndFunc ;==>_RunDOS ;$drive_2 = ("\\sv000bkexample\bnkexample\spool" ) ;FileChangeDir ('c:\test') ;FileChangeDir ('\\sv000bkexample\bnkexample\spool') ;FileChangeDir ($drive_2) _RunDOS( "dir \\sv000bkexample\bnkexample\spool\WWWW*.*fwr /b /o-e /od > \\sv000wire03\BTD011\logs.txt" ) sleep(1000) $lines = _FileCountLines( "\\sv000wire03\BTD011\logs.txt" ) $latest = FileReadLine( "\\sv000wire03\BTD011\logs.txt" , $lines ) FileCopy('\\sv000bkexample\bnkexample\spool\'& $latest, '\\sv000wire03\BTD011\'& $latest) 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