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