Hello stackoverflowers,
我担心我无法弄清楚如何在Perl中的Windows资源管理器中打开带有空格的UNC路径。 目的是,我希望用户将文件放在路径中。为了使其更舒适,路径应自动在资源管理器中打开。它适用于任何本地驱动器。
应该打开的UNC路径是:\\ srvr1 \ mean space dir
到目前为止我的代码:
use strict
use warnings
my $sourceDir = "\\\\srvr1\\mean space dir";
system("start $sourceDir");
出现错误:“Win无法访问\\ srvr1 \ mean。” 好的,所以我试着引用字符串:
my $sourceDir = "\\\\srvr1\\\"mean space dir\"";
导致:“Win无法访问\\ srvr1 \”意味着空间目录“。”
我接下来尝试的是:
my $sourceDir = q{"\\\srvr1\\mean space dir"}
哪个导致在标题中使用正确的路径打开cmd窗口?!
系统调用本身可能是错误的吗? 我非常感谢任何帮助。感谢。
答案 0 :(得分:3)
第二种形式是正确的,但是你必须考虑到start
命令将其第一个引用的参数视为窗口标题这一事实。如果你想start
引用路径,你也需要给出一个窗口标题参数(空字符串很好)。
像这样:
my $sourceDir = q{\\\\srvr1\\mean space dir};
system(qq{start "" "$sourceDir"});
答案 1 :(得分:1)
对于这种事情,数组样式系统调用是一个很好的选择。你不必担心引用路径或逃避。
$path = '\\\\srvr1\mean space dir';
system('start', '', $path);
在系统调用中引用(或忘记引用)路径是我工作过的错误的重要来源。如上所述的习惯意味着你永远不必担心它。