Re: Back-slashes & calling a batch file from perl ???
by $Bill Luebkert other posts by this author
Oct 28 2005 11:09AM messages near this date
view in the new Beta List Site
RE: Comparing 2 text files
|
Re: Back-slashes & calling a batch file from perl ???
James Sluka wrote:
> One more thing to try is to add a trailing space after the directory
> spec, as in;
> system qq{$prog "$dir " $dest}
> or
> my $cmd = qq{$prog "$dir " "$dest"};
>
> I did some quick tests with;
> ##########Perl code
> my $prog = 'c:\windows\desktop\some-batch.bat';
> my $dir = 'c:\windows\desktop\jim'; # no trailing backslash
> my $dest = 'thelabel';
>
> # both the directory and batch files do exist
> if (-e $prog) {print "prog found\n"} else {print "prog NOT found\n"};
> if (-d $dir) {print "dir found\n"} else {print "dir NOT found\n"};
>
> # Version 1, works
> system qq{$prog "$dir " $dest}; # quoted $dir in case blanks in path
> # and note the extra space in "$dir "
>
> # Version 2, works
> my $cmd = qq{$prog "$dir " "$dest"}; # note the extra space in "$dir "
> print "\n\nCMD ==", $cmd, "=\n";
> system "$cmd";
> # end Perl code
>
> ### some-batch.bat contains
> echo %1
> echo %2
> dir %1
>
> The perl code above fails if the trailing space after the dir spec is
> omitted. The space can be in the original variable or added when the
> command is created (as I did above).
That doesn't make any sense. There's already one space there why would
putting two there make a difference ? Mine worked with just one.
A trailing \ may make some change, but an extra space seems pretty
redundant.
This works fine for me:
if (-e $prog) { print "$prog found\n" } else { print "$prog NOT found\n" };
if (-d $dir) { print "$dir found\n" } else {
mkdir $dir or die; print "$dir NOT found created\n" };
# $dir =~ s/\//\\/g; # this is optional for me
system qq{$prog "$dir" $dest};
The bat file produces (for my version) :
%0 = E:/tmp/nvhotbackup.bat
%1 = "E:/tmp/backup"
%2 = thelabel
dir "E:/tmp/backup"
Volume in drive E is DATA120
Volume Serial Number is 0000-0E20
Directory of E:\tmp\backup
10/28/2005 10:51 AM <DIR> .
10/28/2005 10:51 AM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 7,019,872,256 bytes free
errorlevel = 0
cmdline = cmd /c "E:/tmp/nvhotbackup.bat "E:/tmp/backup" thelabel"
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@[...].com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Thread:
Michael D Schleif
Michael D Schleif
Chris Wagner
$Bill Luebkert
$Bill Luebkert
Michael D Schleif
$Bill Luebkert
Michael D Schleif
$Bill Luebkert
Michael D Schleif
$Bill Luebkert
James Sluka
Ted Zeng
$Bill Luebkert
Ted Zeng
Paul
Peter Eisengrein
Trevor Joerges
Jim Guion
$Bill Luebkert
James Sluka
$Bill Luebkert
Chris Wagner
|