Perl 无法在 Windows 10 中找到现有目录

Posted

技术标签:

【中文标题】Perl 无法在 Windows 10 中找到现有目录【英文标题】:Perl can't Locate existing directory in windows 10 【发布时间】:2021-04-18 17:27:14 【问题描述】:

我正在尝试列出目录 Doc 中的文件。在这个目录里面有子目录。 perl 无法单独访问子目录目录“用户”之一。 下面是命令

 my @ListofFiles = File::Find::Rule->file()
                        ->name( '*.xml' , '*.wav' )
                           ->in( $target_dir );
 

列出了子目录中的所有 xml 文件,除了目录 "user" 下。 这个目录在 Windows 资源管理器中非常可见,我可以通过光标进行交互。 但是 perl 无法访问它。当我使用 perl 命令检查目录“用户”是否存在时。它显示找不到这样的目录

Additional info : Directory "doc" has  following 
             1) Directory "Audio " -> Contains .wav files
            2) Directory "Zip"   -> contains .zip files
            3) Movie.xml
            4) Image.xml
            5) Directory "user"  -> contains .xml
The .wav and .xml files are fethched without any issues

我不确定这里有什么问题。 请帮忙。

【问题讨论】:

@Dheena Dayalan 你在$target_dir 中设置了正确的路径吗? user目录也被隐藏/当前用户有查看权限吗? @vkk05 是的,我做到了。这也可以从规则查询中列出其他子目录文件的原因来确认。是的,它确实有正确的条件。 @Dheena Dayalan 回复:当我使用 perl 命令检查目录“用户”是否存在时。它显示没有找到这样的目录 - 你能粘贴它是什么命令吗? “但是 perl 无法访问它。” 这是描述问题的一种非常糟糕的方式。您需要说明 1)如何在变量 $target_dir 中创建路径,2)如何检查结果数组中的内容,最好是 Data::Dumper 打印,以及 3)显示 perl 程序文件的文件结构与 target_dir 的关系。此时我们所能做的就是猜测,您必须提供更多信息。 @vkk05 。我们有一个命令来检查目录是否存在 '-e "C:\\doc\\user" ' 。我用这个来验证 【参考方案1】:

尝试执行以下脚本,让我们知道它是否适合您,同时向我们展示结果:

#!/usr/bin/perl

use strict; use warnings;

use Data::Dumper;
use File::Find::Rule;

my $directory = "C:/doc";

my @subdirs = File::Find::Rule->directory->in( $directory );
print "Subdirectories:\n".Dumper(\@subdirs);

my @ListofFiles = File::Find::Rule->file()
                        ->name( '*.xml' , '*.wav' )
                           ->in( $directory );

print "ListofFiles:\n".Dumper(\@ListofFiles);

【讨论】:

感谢您的代码。但这对我没有帮助。但是,可以访问 c# 中的相同“用户”目录。当我使用 xcopy 将此“用户”目录复制到另一个位置时,我可以看到它具有“?用户”作为附加“?”的目录名称.这仅在 xcopy 期间可见。这是否会导致问题,是否因此无法被 perl 识别。但我需要 perl 中的解决方案。

以上是关于Perl 无法在 Windows 10 中找到现有目录的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上安装 PerlMagick7 草莓 Perl

逐行文件 io 在 Windows 中无法按预期工作

无法在Windows 8.1上安装Oracle 12c - 进程中出错... perl.exe

Perl 串口访问 [Windows 10]

U盘装win10(我们无法创建新的分区,也找不到现有分区)

我无法在 Windows 10 的服务中找到万维网发布服务