centralpressure Posted October 21, 2009 Posted October 21, 2009 I want to have the script open an Excel file and save it with the current system date and time in the name. Trying to use StringSplit to get the date to write without the slashes, so 10/21/2009 becomes 10212009. I used a modified version of a script in the forums here, and this is what I have: #include <Date.au3> $tTime = _Date_Time_GetSystemTime() $split = StringSplit ($tTime, "/") Run("C:\Program Files\Microsoft Office\Office11\Excel.exe") WinWaitActive("Microsoft Excel - Book1") Send("!f") Send("a") WinWaitActive("Save As") Send("{Tab 6}") Send("{Down}") Send("{Enter}") Send("RegistryData_"& $split) Thanks for the help.
mistersquirrle Posted October 21, 2009 Posted October 21, 2009 I want to have the script open an Excel file and save it with the current system date and time in the name. Trying to use StringSplit to get the date to write without the slashes, so 10/21/2009 becomes 10212009. I used a modified version of a script in the forums here, and this is what I have: #include <Date.au3> $tTime = _Date_Time_GetSystemTime() $split = StringSplit ($tTime, "/") Run("C:\Program Files\Microsoft Office\Office11\Excel.exe") WinWaitActive("Microsoft Excel - Book1") Send("!f") Send("a") WinWaitActive("Save As") Send("{Tab 6}") Send("{Down}") Send("{Enter}") Send("RegistryData_"& $split) Thanks for the help. StringSplit() would format $Split like this: $Split[0] = 3, $Split[1] = 10, $Split[2] = 21, $Split[3] = 2009. Something you should try, or look at, is StringReplace() and replace the "/" with just a blank string ("") We ought not to misbehave, but we should look as though we could.
lordicast Posted October 21, 2009 Posted October 21, 2009 $string = '10/21/09' $string2 = StringReplace($string,'/','') MsgBox(0,'',$string2) [Cheeky]Comment[/Cheeky]
memoryoverflow Posted October 22, 2009 Posted October 22, 2009 (edited) ... so 10/21/2009 becomes 10212009.$split = StringSplit ($tTime, "/")Send("RegistryData_"& $split)$split becomes an array in the 2nd quoted line, not a string. So the last quoted line probably doesn't do what you expect. If you really want to have what you specified in the 1st quoted line, use $split = _ArrayToString($split, '') after the 2nd quoted line. (Requires #include <array.au3>)edit: The '' in the last line are 2 single quotes, not a doublequote, specifying an empty string.Iordicast's example does the same thing easier - this was just to clarify a possible missconception of StringSplit(). Edited October 22, 2009 by memoryoverflow (The signature is placed on the back of this page to not disturb the flow of the thread.)
centralpressure Posted October 22, 2009 Author Posted October 22, 2009 $split becomes an array in the 2nd quoted line, not a string. So the last quoted line probably doesn't do what you expect. If you really want to have what you specified in the 1st quoted line, use $split = _ArrayToString($split, '') after the 2nd quoted line. (Requires #include <array.au3>)edit: The '' in the last line are 2 single quotes, not a doublequote, specifying an empty string.Iordicast's example does the same thing easier - this was just to clarify a possible missconception of StringSplit().I tried lordicast's method, but the message box is blank.#include <Date.au3>$tTime = _Date_Time_GetSystemTime()$string2 = Stringreplace($tTime,'/','')MsgBox(0,'',$string2)I will try working with memoryflow's suggestion now, but really thought the above would work.
centralpressure Posted October 22, 2009 Author Posted October 22, 2009 Nothing seems to work, I went backwards a bit just to be sure I was getting the system time and couldn't even get that to display. #include <Date.au3> $tTime = _Date_Time_GetSystemTime() MsgBox(0,'',$tTime) Again, blank message box.
mistersquirrle Posted October 22, 2009 Posted October 22, 2009 (edited) If you read the help file on it, and look at the example, it looks like this is required: _Date_Time_SystemTimeToDateStr(). I tried this#include <Date.au3> $tTime = _Date_Time_GetSystemTime() MsgBox(0, "", _Date_Time_SystemTimeToDateStr($tTime))and that returned the system date, and time. Then you just have to remove the time, and then try doing StringReplace() Take a look at the help file examples againI put in a function that returned the time as well. I'm assuming you don't want that. It's just _Date_Time_SystemTimeToDateTimeStr() if you do. Formats mm/dd/yyyy hh:mm:ss Edited October 22, 2009 by mistersquirrle We ought not to misbehave, but we should look as though we could.
lordicast Posted October 22, 2009 Posted October 22, 2009 (edited) why dont you just use this? $Date = @MON&@MDAY&@YEAR Added EX; $Time = @HOUR&':'&@MIN&':'&@SEC $Date = @MON&@MDAY&@YEAR MsgBox(0,'',$Date &' '&$Time) Edited October 22, 2009 by lordicast [Cheeky]Comment[/Cheeky]
centralpressure Posted October 22, 2009 Author Posted October 22, 2009 why dont you just use this? $Date = @MON&@MDAY&@YEAR Added EX; $Time = @HOUR&':'&@MIN&':'&@SEC $Date = @MON&@MDAY&@YEAR MsgBox(0,'',$Date &' '&$Time) Thanks for all the help! Both suggestions worked. Out of principle I went with the StringReplace just so I knew I had correctly used something, although the method Lordicast suggested last is the simplest. The part that was causing the error previously was ommiting the _Date_Time_SystemTimeToDateTimeStr. Here is what worked: #include <Date.au3> $tCur = _Date_Time_GetSystemTime() $string = _Date_Time_SystemTimeToDateTimeStr($tCur) $string2 = StringReplace($string,'/','') $string3 = StringReplace($string2,':','') MsgBox(0,'Time', $string3) This allowed me to tack on the date and time onto a file so I could save updates in an archive rather than replacing. Again thanks for your help and patience!
memoryoverflow Posted October 22, 2009 Posted October 22, 2009 (edited) why dont you just use this?$Date = @MON&@MDAY&@YEARBecause he wanted system time and not local time? And this is why the other examples, too, yield wrong results. Edited October 22, 2009 by memoryoverflow (The signature is placed on the back of this page to not disturb the flow of the thread.)
avery Posted October 22, 2009 Posted October 22, 2009 I did not read all the responses so I apologize of this has already been stated but you can't have "/" or "\" and a couple other characters or symbols in names, at least not in windows. Maybe there is a way around it but I am not sure how. I hope this was helpful if not I can remove it if I just made myself look stupid lol. www.abox.orgAvery HowellVisit My AutoIt Websitehttp://www.abox.org
memoryoverflow Posted October 22, 2009 Posted October 22, 2009 And here's how to get system time into the string: If you want to use _Date_Time_GetSystemTime() (it's more efficient without): That function returns a SYSTEMTIME struct as defined in StructureConstants.au3 with the members 'Year', 'Month', 'Dow', 'Day', 'Hour', 'Minute', 'Second', 'MSeconds' You can cast that in an array and then use the first tryied methods on it or use it directly:#include <Date.au3> Local $tSysTime = _Date_Time_GetSystemTime() $sString = DllStructGetData($tSysTime, 2) & DllStructGetData($tSysTime, 4) & DllStructGetData($tSysTime, 1) ConsoleWrite($sString & @CRLF) (The signature is placed on the back of this page to not disturb the flow of the thread.)
lordicast Posted October 22, 2009 Posted October 22, 2009 Because he wanted system time and not local time?And this is why the other examples, too, yield wrong results.My system time and local time are one. hmm I think this is why I am so ZEN. [Cheeky]Comment[/Cheeky]
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