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