Gene Posted October 27, 2005 Share Posted October 27, 2005 $sHelpFilePathName = FileGetShortName(@ScriptDir & "\StopLightTimerHelp.pdf" ) $sCmdLine = @ComSpec & " /c " & "start " & $sHelpFilePathName MsgBox(0,"Information", "$sCmdLine = " & $sCmdLine) ClipPut($sCmdLine) Run($sCmdLine, "", @SW_MINIMIZE) When this code is run in one location the content of $sCmdLine is: C:\WINNT\system32\cmd.exe /c start K:\ETSDOC~1\TOASTM~1\Timer\BU60E3~1\STOPLI~1.PDF This is exactly as expected and the .PDF is displayed When run in another location the content of $sCmdLine is: C:\WINNT\system32\cmd.exe /c start K:\Local\Prog\StopLight Timer\StopLightTimerHelp.pdf Here I get an error to the effect that the file K:\Local\Prog\StopLight can't be found. Suggestions please... Gene [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
Developers Jos Posted October 27, 2005 Developers Share Posted October 27, 2005 $sHelpFilePathName = FileGetShortName(@ScriptDir & "\StopLightTimerHelp.pdf" ) $sCmdLine = @ComSpec & " /c " & "start " & $sHelpFilePathName MsgBox(0,"Information", "$sCmdLine = " & $sCmdLine) ClipPut($sCmdLine) Run($sCmdLine, "", @SW_MINIMIZE)When this code is run in one location the content of $sCmdLine is:C:\WINNT\system32\cmd.exe /c start K:\ETSDOC~1\TOASTM~1\Timer\BU60E3~1\STOPLI~1.PDFThis is exactly as expected and the .PDF is displayedWhen run in another location the content of $sCmdLine is:C:\WINNT\system32\cmd.exe /c start K:\Local\Prog\StopLight Timer\StopLightTimerHelp.pdfHere I get an error to the effect that the file K:\Local\Prog\StopLight can't be found.Suggestions please...GeneAnother work-around is to double qoute the File in stead of using the shortname:$sCmdLine = @ComSpec & " /c " & 'start "' & $sHelpFilePathName & '"' SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
ReFran Posted October 27, 2005 Share Posted October 27, 2005 (edited) Another work-around is to double qoute the File in stead of using the shortname:$sCmdLine = @ComSpec & " /c " & 'start "' & $sHelpFilePathName & '"'Why you want to use CMD? Avoiding to state the path to the Viewer exe? Perhaps this is what you want:$oWSH = ObjCreate("Wscript.Shell")$oWSH.run(@ScriptDir & "\StopLightTimerHelp.pdf")HTH, Reinhard Edited October 27, 2005 by ReFran Link to comment Share on other sites More sharing options...
Gene Posted October 27, 2005 Author Share Posted October 27, 2005 would another location be a cdrom?Lar.Thanks for the reply.No, they're both on the same hard drive. I forgot to mention that I'm usin beta .84.Gene [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
Gene Posted October 27, 2005 Author Share Posted October 27, 2005 Another work-around is to double qoute the File in stead of using the shortname:$sCmdLine = @ComSpec & " /c " & 'start "' & $sHelpFilePathName & '"'Thanks for the reply.I tried to use the short name because I had no success with double quoting. Does that mean that the short file name function is not reliable? It appears not to be, in one HD location it works and in another location on the same drive it doesn't, or is there something I'm not seeing? The environment is Win2K Pro sp4 256MB AutoIt beta .84.Gene [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
Gene Posted October 27, 2005 Author Share Posted October 27, 2005 Why you want to use CMD? Avoiding to state the path to the Viewer exe? Perhaps this is what you want:$oWSH = ObjCreate("Wscript.Shell")$oWSH.run(@ScriptDir & "\StopLightTimerHelp.pdf")HTH, ReinhardThanks for the reply.No, avoiding the 'Long" path to the PDF.I'll try your suggestion.That has pretty much the same problem in both locations, it opened an Explorer window on the following path K:\ETS. Since that path doesn't exist, the window was empty. I also tried enclosing the command line in quotes as below, but that didn't work either.$oWSH = ObjCreate("Wscript.Shell")$oWSH.run("'" & @ScriptDir & "\StopLightTimerHelp.pdf" & "'") [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
Gene Posted October 27, 2005 Author Share Posted October 27, 2005 Another work-around is to double qoute the File in stead of using the shortname:$sCmdLine = @ComSpec & " /c " & 'start "' & $sHelpFilePathName & '"'I tried double quoting again using your syntax above, In fact I just pasted it into my script. It still didn't work.GeneThanks for the reply. [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
ReFran Posted October 27, 2005 Share Posted October 27, 2005 I tried double quoting again using your syntax above, In fact I just pasted it into my script. It still didn't work.GeneThanks for the reply.It sounds like a local problem on your PC. Also if you wanted to avoid it please state your full path.Keep in mind that there is also a limitation in the length of a path. You may try to shorten the long pathname with an CMD substitute command (something like subst V: D:\blabla\.....HTH, Reinhard Link to comment Share on other sites More sharing options...
Gene Posted October 28, 2005 Author Share Posted October 28, 2005 It sounds like a local problem on your PC. Also if you wanted to avoid it please state your full path.Keep in mind that there is also a limitation in the length of a path. You may try to shorten the long pathname with an CMD substitute command (something like subst V: D:\blabla\.....HTH, ReinhardThis will be installed on other people's PCs, I won't have control of the path. I would never setup substitutions on someone elses's PC. Besides which, the FileGetShortName() function succeeds on a long path and appears to fail on a shorter path. Look again at the first post in this thread.I wonder what sort of local problem would cause the FileGetShortName() function to fail in that manner.Thanks for the reply.Gene [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
Shibuya Posted October 28, 2005 Share Posted October 28, 2005 your file StopLightTimerHelp.pdf must exist during the execution of the command in order for FileGetShortName to work The speed of sound is defined by the distance from door to computer divided by the time interval needed to close the media player and pull up your pants when your mom shouts "OH MY GOD WHAT ARE YOU DOING!!!" Link to comment Share on other sites More sharing options...
Gene Posted October 28, 2005 Author Share Posted October 28, 2005 your file StopLightTimerHelp.pdf must exist during the execution of the command in order for FileGetShortName to workThat is a good point. It does. [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
CyberSlug Posted October 28, 2005 Share Posted October 28, 2005 (edited) Well, it is possible to disable short file names on NTFS volumes A lot of good info can be found here (scroll down a bit for the pertinent info, but the full page is an interesting read) Edited October 28, 2005 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
Gene Posted October 28, 2005 Author Share Posted October 28, 2005 Well, it is possible to disable short file names on NTFS volumes A lot of good info can be found here (scroll down a bit for the pertinent info, but the full page is an interesting read)The thing that is hard to understand is that both the success and apparent failure occurr in different directory trees on the same had drive. The success is with the path with more levels and longer folder names than the failure location. Thanks for the link to more information. I'll look at it later today when I'm functional. [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
DaveF Posted October 28, 2005 Share Posted October 28, 2005 The behavior of FileGetShortName is to return the path that it was given if the underlying function call to GetShortPathName fails. It would be interesting to see what GetLastError returns immediately after the failure.$ourError = DLLCall("kernel32.dll","int","GetLastError") Yes yes yes, there it was. Youth must go, ah yes. But youth is only being in a way like it might be an animal. No, it is not just being an animal so much as being like one of these malenky toys you viddy being sold in the streets, like little chellovecks made out of tin and with a spring inside and then a winding handle on the outside and you wind it up grrr grrr grrr and off it itties, like walking, O my brothers. But it itties in a straight line and bangs straight into things bang bang and it cannot help what it is doing. Being young is like being like one of these malenky machines. Link to comment Share on other sites More sharing options...
randallc Posted October 28, 2005 Share Posted October 28, 2005 Hi,I am not surprised how much trouble there is "getting the quotes right"I have settled my problem by always using this type of structure to keep the quotes honest;If StringInStr($File, " ") Then $File = '"' & $File & '"' If StringInStr($AnswerFile, " ") Then $AnswerFile = '"' & $AnswerFile & '"' $Command = @ComSpec & " /c " & 'FINDSTR '& $Switches &' '& $File &'>'&$AnswerFile $DosFINDSTRReturn=RunWait($Command, @SystemDir, @SW_HIDE)If you really look at "double quotes", they sometimes need to be triple etc.i would be interested to hear if this solves the problems people have with the quotes, or if you really believe there is some other problem?Best, randall ExcelCOM... AccessCom.. Word2... FileListToArrayNew...SearchMiner... Regexps...SQL...Explorer...Array2D.. _GUIListView...array problem...APITailRW Link to comment Share on other sites More sharing options...
Gene Posted October 29, 2005 Author Share Posted October 29, 2005 The behavior of FileGetShortName is to return the path that it was given if the underlying function call to GetShortPathName fails. It would be interesting to see what GetLastError returns immediately after the failure.$ourError = DLLCall("kernel32.dll","int","GetLastError")As you suspected it is failing part of the time. Below are the path that it fails with then the path it succeeds with.Path Failed - K:\Local\Prog\StopLight Timer\_StopLightTimerHelp.pdf Path Succeeded - K:\ETS Documents\ToastMasters\Timer\Build 2005-10-26a\StopLightTimerHelp.pdf H'mmmn, my face is red. As you can see (and me too now that they are next to each other) there is a difference in the file name. I don't know when I got the wrong named file in the zipped auxilary files.Thank you all for your responses and suggestions. [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... Link to comment Share on other sites More sharing options...
DaveF Posted October 29, 2005 Share Posted October 29, 2005 Yes yes yes, there it was. Youth must go, ah yes. But youth is only being in a way like it might be an animal. No, it is not just being an animal so much as being like one of these malenky toys you viddy being sold in the streets, like little chellovecks made out of tin and with a spring inside and then a winding handle on the outside and you wind it up grrr grrr grrr and off it itties, like walking, O my brothers. But it itties in a straight line and bangs straight into things bang bang and it cannot help what it is doing. Being young is like being like one of these malenky machines. Link to comment Share on other sites More sharing options...
Gene Posted October 29, 2005 Author Share Posted October 29, 2005 Hi,I am not surprised how much trouble there is "getting the quotes right"I have settled my problem by always using this type of structure to keep the quotes honest;If you really look at "double quotes", they sometimes need to be triple etc.i would be interested to hear if this solves the problems people have with the quotes, or if you really believe there is some other problem?Best, randallThe reason I went to the FileGetShortName() function was that I expected I was getting the quotes wrong. However, the problem here was my error, but a different one. If you check my previous post you'll see what I mean. [font="Verdana"]Thanks for the response.Gene[/font]Yes, I know the punctuation is not right... 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