在Perl脚本中重新加载磁盘分区列表

时间:2016-08-03 15:58:33

标签: perl windows-7 mount

我有一个在Cygwin命令提示符下执行的Perl脚本。它调用批处理文件来创建和装载虚拟磁盘(VHD文件)。 安装后,Perl脚本尝试访问新磁盘但失败并发出信号表明找不到该目录。  我的脚本看起来像:

(...)   
system ("create_mount_G_disk.bat");
# G:\ mounted 
if (-d "G:") die "G: not found";
(...)

我想这里Perl在脚本启动时缓存磁盘列表,这就是为什么它很难访问新目录。有没有办法在运行时重新加载缓存?

我很乐意提供任何帮助! 谢谢:))

2 个答案:

答案 0 :(得分:0)

在cygwin中,尝试/cygdrive/g来引用G:。您也可以更好地说G:/而不仅仅是G:

答案 1 :(得分:0)

您没有向我们展示的代码中还有其他内容。这是我在Windows 10 Pro笔记本电脑上的Cygwin bash窗口中获得的内容:

$ perl -E 'say "yes" if -d "C:"'
$

这是预期的,因为C:不是目录。

另一方面,

$ perl -E 'say "yes" if -d "C:\\"'
yes
$

$ perl -E 'say "yes" if -d "C:/"'
yes
$

此外,

if (-d "G:") die "G: not found";

这不是Perl,你的逻辑是颠倒过来的。

尝试:

unless (-d 'G:/') {
    die 'G: not found';
}