On 4/2/25 6:08 PM, Bruce Gray wrote:


On Apr 2, 2025, at 19:47, ToddAndMargo via perl6-users <perl6-users@perl.org> 
wrote:

--snip--

   raku -e "say 
'\\192.168.240.10\oldserver\Backup\MyDocsBackup\backup1'.IO.d.Bool;"
   False

--snip--

Moving this one-liner into a .raku file (to remove the complication of Windows 
needing double-quotes for our `-e`), and removing `.IO.d.Bool`, I ran just this 
line:
        say '\\192.168.240.10\oldserver\Backup\MyDocsBackup\backup1';
The output is:
                \192.168.240.10\oldserver\Backup\MyDocsBackup\backup1
So, the initial two backslashes are becoming a single backslash.
You need a quoting that does not special-case doubled backslashes (like the Q[] 
I have seen you use), or to enter the path with initial quadruple backslashes.

Does changing your one-liner to this:
        raku -e "say 
Q[\\192.168.240.10\oldserver\Backup\MyDocsBackup\backup1].IO.d.Bool;"
fix the problem?
If not, remove the `.Bool` just for a test run. You might still get False (like 
if the path exists but is not a directory), or you might get a Exception that 
gives you more detail of what is going wrong (like `Failed to find ...`, with 
the exact path that it was *actually* looking for).



Hi Bruce,

I need the function to operate with the exact path
assigned by Windows.  No adding or subtracting.

This was my work around:


sub Directory( Str $DriveDirectory ) returns Bool is export( :Directory )  {
   # True if a Directory or Drive Letter

my Str $RtnStr = RunCmd( "powershell.exe test-path -Path " ~ Q["] ~ $DriveDirectory ~ Q["] ~ " -PathType Container", True );
   # print "RtnStr = <$RtnStr>\n";
if $RtnStr.lc.starts-with( "true" ) { return True; } else { return False; }
}


Notice that I did not have to mess the `$DriveDirectory`?

.IO.d.Bool needs to do the same.

Let me know if you want the code for `RunCmd`.

Thank you for the help,
-T


Reply via email to