5) Here's a crazy one I just found out today:
The assoc command cannot have any SPACES after the assoc name. Yep, if you
have any spaces after PerlScript in
assoc .pl=PerlScript
your association will never work. I had spaces because I generate the
command in a script like this:
echo ::@echo off >
%post_exp_bat%
echo :: >>
%post_exp_bat%
echo set owd=%%cd%% >>
%post_exp_bat%
echo :: >>
%post_exp_bat%
echo rem This should put us one level up, in order to link >>
%post_exp_bat%
echo rem then directory 'perl' to the strawberry dir >>
%post_exp_bat%
echo cd .. >>
%post_exp_bat%
echo :: >>
%post_exp_bat%
echo echo Remove any existing link >>
%post_exp_bat%
echo if exist perl rmdir perl >>
%post_exp_bat%
echo :: >>
%post_exp_bat%
echo echo Link the new version >>
%post_exp_bat%
echo mklink /d perl %%owd%% >>
%post_exp_bat%
echo echo Now add Perl to PATH >>
%post_exp_bat%
echo cd perl >>
%post_exp_bat%
echo call update_env.pl.bat --do >>
%post_exp_bat%
echo echo Associating .pl with perl.exe >>
%post_exp_bat%
echo ftype PerlScript="%%cd%%\bin\perl.exe" "%%1" %%* >>
%post_exp_bat%
echo assoc .pl=PerlScript >>
%post_exp_bat%
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
see all these spaces ----||||||||||||||||||||||||||||||||||
It was those spaces that were screwing be up.
--
Matthew O. Persico
Lazard
30 Rockefeller Plaza
New York, NY 10112
212 632 6136
From: Matthew Persico/ITS/Lazard
To: kmx <[email protected]>
Cc: [email protected]
Date: 04/17/2014 10:29 AM
Subject: Re: Run an external program and capture its output
I've been fighting a few Windows boxes here that are balky with assoc and
ftype. What I've found is that:
1) You can't have any perl processes open when you run the fype and assoc
commands.
2) You have to run ftype first and assoc second.
3) You must be an Administrator account when you run the fype and assoc
commands.
4)*** You must run the fype and assoc commands in a window that your
started by RIGHT CLICKING A SHORTCUT for cmd.exe and you MUST chose RUN AS
AN ADMINISTRATOR. Just being an administrator and opening a command window
is not enough.
ftype PerlScript="C:\Strawberry\perl\bin\perl.exe" "%1" %*
assoc .pl=PerlScript
Obviously, change the path to Perl as per your local install.
--
Matthew O. Persico
Lazard
30 Rockefeller Plaza
New York, NY 10112
212 632 6136
From: kmx <[email protected]>
To: [email protected]
Date: 04/17/2014 07:53 AM
Subject: Re: Run an external program and capture its output
On 17.4.2014 13:49, John Emmas wrote:
> On 17/04/2014 11:34, [email protected] wrote:
>> .
>>> This is one that comes up from time to time - it's not specific to
>>> Strawberry Perl, and has to do with file associations and something
>>> else .... a registry setting ? ... I can never remember the details,
>>> nor of how to search for it.
>>
>> Aaah ... here's the solution I was thinking of:
>> http://www.perlmonks.org/?node_id=1024609
>>
>
> Wow, I'm amazed! I've been programming on Windows for nearly 30 years,
> yet I never encountered this problem before. Nevertheless you're
> absolutely right Rob. Placing the word "perl" at the start of my
command
> line solved the problem! Sadly, the fix suggested by that article
didn't
> work in my case - but no matter, at least I've got a solution now.
>
> One more question - is there a way to obtain the Windows version
> information using a perl script? For example, can I obtain the value of
> WINVER somehow?
Check
https://metacpan.org/pod/Win32#Win32::GetOSDisplayName
and
https://metacpan.org/pod/Win32#Win32::GetOSVersion
--
kmx