Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php scandir()是否排除Windows下的隐藏文件?_Php_Windows_Scandir_Hidden Files - Fatal编程技术网

php scandir()是否排除Windows下的隐藏文件?

php scandir()是否排除Windows下的隐藏文件?,php,windows,scandir,hidden-files,Php,Windows,Scandir,Hidden Files,在Windows系统上,备份代理以与原始文件几乎相同的名称和相同的路径创建临时隐藏文件。这可能干扰了使用PHPscandir()的进程 现在我想知道PHPscandir()是否排除了Windows上设置了隐藏标志的文件 有一些关于Linux风格的隐藏文件的文章,scandir()应该如何忽略以点开头的文件,但很少没有关于Windows文件的信息。一个简短的测试表明scandir()和glob()或其他人都不关心隐藏标志 以下是实验和结果: 部分: 视窗7 PHP 5.6.9(x86) Vis

在Windows系统上,备份代理以与原始文件几乎相同的名称和相同的路径创建临时隐藏文件。这可能干扰了使用PHP
scandir()
的进程

现在我想知道PHP
scandir()
是否排除了Windows上设置了隐藏标志的文件


有一些关于Linux风格的隐藏文件的文章,
scandir()
应该如何忽略以点开头的文件,但很少没有关于Windows文件的信息。

一个简短的测试表明
scandir()
glob()
或其他人都不关心隐藏标志

以下是实验和结果:

部分:

  • 视窗7
  • PHP 5.6.9(x86)
  • Visual Studio 2012可再发行x86
因此
scandir()
不会隐藏设置了隐藏标志的文件

下一个问题是,是否可以配置更强大的PHP命令,如
glob()

首先,没有处理标志的参数:

其次,Gabriel S.Luraschi有这样一个有说服力的评论:

他推荐
exec('dir…\A…')
。但对于商业人质(如果他们在Windows上运行),这是不允许的

请确保:使用Linux样式并忽略以点开头的文件,如下所示:


我已经在windows 7和windows 8&8.1上尝试过这段代码,它肯定会通过标记隐藏文件来排除它们。



我看到您在问题中提到,有一些方法可以排除linux中以“.”开头的文件和其他内容,但有关windows的信息很少。然后检查这一点,它不仅会删除以“.”和“…”开头的文件,还会标记出实际隐藏的文件,并且在windows中肯定会工作。

您尝试过我建议的答案吗?在windows中,有一种方法可以标记出隐藏的文件,防止它们被打印到屏幕上,或者根据需要排除它们。
   <?php

    $location="path/to/a/folder/";

    if( function_exists("scandir") ){

        $file = scandir($location);

        foreach($file as $this_file) {
        /***Putting the condition here restricts hidden files and files starting with '.' and '~'...****/
            if (is_hidden_file($location.$this_file) || $this_file == '.' || $this_file == '..' || $this_file[0]=='.' || $this_file[0]=='~' ) 
                continue;

            else {
            var_dump($this_file);
            }

        }       
    }

    function is_hidden_file($fn) {
        $dir = "\"".$fn."\"";
        $attr = trim(shell_exec("FOR %A IN (".$dir.") DO @ECHO %~aA"));
        if($attr[3] === 'h')
            return true;

        return false;
    }
?>