Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Re: (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows

by BrowserUk (Pope)
on Jul 25, 2003 at 00:13 UTC ( #277759=note: print w/ replies, xml ) Need Help??


in reply to Re: (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows
in thread (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows

If you modify svsinghs step 10 as follows:

perl.exe c:\work\perl\qaHelpTitles.pl "%1"

Then the name of the directory that you right-clicked on to run the script will be supplied to the script as $ARGV[0].

A word of caution though. The path supplied is one of those dratted shortened thingies. It's been so long since I encountered one of these that I forgot what they are called?. These work okay for many purposes, but are likely to confuse some things. There's probably a simply way of retriving the expanded version from the shortened one, but I haven't looked that up yet.


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller


Comment on Re: Re: (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows
Select or Download Code
Re: Re: Re: (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows
by revdiablo (Prior) on Jul 25, 2003 at 02:53 UTC

    Perhaps you mean a relative path? If that's the case, it's simply a matter of concatenating it with the Cwd. In any case, thanks for the tip. I'll be sure to play with it next time I'm on a winbox. :)

      No. Not a relative path :)

      The correct term is "short names". Example

      P:\test>dir /x "d:\Program*" Volume in drive D is Winnt Volume Serial Number is D822-5AE5 Directory of d:\ 19/07/03 06:29 <DIR> PROGRA~1 Program Files 1 File(s) 0 bytes 1,153,617,920 bytes free

      Here the full (or long) name of the directory is "Program files". The short name is "PROGRA~1".

      This was the hack MS introduced to allow Dos/Win95 programs that were written expecting the old 8.3 filename format to continue to work once they introduced the long filenames that could include spaces & other 'funny characters' and multiple .s etc. Mostly I had forgotten they still existed, but for some reason, when you use the "%1" syntax as I described above, you get the short form rather than the long one.

      For many things, rename, open, opendir etc. these work just fine, but if you were trying to match file or directory names that followed some pattern then you aren't going to get the expected result when you get given a shortened form.


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller

Re: (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows
by Intrepid (Deacon) on Jul 25, 2003 at 10:05 UTC
    A word of caution though. The path supplied is one of those dratted shortened thingies. It's been so long since I encountered one of these that I forgot what they are called?. These work okay for many purposes, but are likely to confuse some things. There's probably a simply way of retriving the expanded version from the shortened one, but I haven't looked that up yet.

    You don't have to look it up, because I know and now I'm going to tell you.

    Substitute "%L" (case does not matter, but in many font faces it is maddeningly difficult to tell a lowercase "l" from a numeral "1") for "%1".

    There's a strong connection between this node and the one I created here; this (the top node) basically explains how to do what I didn't cover over there.

    The one item not covered in the top node discussion was that using Regedit manually is not the best way to do this. Creating a .REG file by exporting a correctly done new key as detailed in the instructions given, and then merging it with the target Registry is the better way (this is commonly accepted). Only one person has to get it right, and then it's easy to propagate.

    One .REG file can serve as a template for any number of Perl scripts that one would want to run as context-click GUI add-ons. Only a few characters of the keynames and the path to the perl script need to be changed.

      Nice one. Thanks.

      In fairness to the OP, he has corrected the "manual regedit" situation with a follow-up post which appears below.


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://277759]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (9)
As of 2014-08-29 23:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (289 votes), past polls