【问题标题】:Create subdirectories within each existing directory by php通过 php 在每个现有目录中创建子目录
【发布时间】:2017-10-15 07:54:25
【问题描述】:

需要在每个已经存在的子目录中创建三 (3) 个目录(但不在任何子子目录或更深的子目录中)。子目录名称不一,命名没有统一。 PHP Windows 命令行。

开始:

C:/aaa         //this is the current working directory
C:/aaa/001     //subdirectory 001
C:/aaa/002
C:/aaa/ccc/xyz
C:/aaa/randomname
.
C:/aaa/z

结果:

C:/aaa
C:/aaa/001/dir1
          /dir2
          /dir3
C:/aaa/002/dir1
          /dir2
          /dir3
C:/aaa/ccc/dir1
          /dir2
          /dir3
C:/aaa/ccc/xyz
C:/aaa/randomname/dir1
                 /dir2
                 /dir3
.
C:/aaa/z/dir1
        /dir2
        /dir3

如何修改这个 php 代码,使其发生在每个一级子目录中?

mkdir("dir1", 0700);
mkdir("dir2", 0700);
mkdir("dir3", 0700);

【问题讨论】:

  • 这段代码需要的不仅仅是修改,它缺少所有代码来确定在哪里创建 3 个目录

标签: php windows command-line directory


【解决方案1】:

只需修改数组应该在哪些目录下创建文件夹,以及哪些文件夹

<?php
    $create_directoires = ["dir1", "dir2", "dir3"];
    $exclude_directories = [".", ".."];

    $dh = opendir(getcwd());

    while(($file = readdir($dh)) !== false) {
        if(is_dir($file) && !in_array($file, $exclude_directories)) {
            foreach($create_directoires as $create_directory) {
                if(!file_exists($file."/".$create_directory)) {
                    mkdir($file."/".$create_directory, 0700);
                }
            }
        }
    }

【讨论】:

  • $directories = ["001", "002", "003"]; 子目录的名称不同,因此需要适用于任何一级子目录的通用名称
  • 那你得告诉我他们的决心
  • 子目录名称(上例中的001, 002...999)变化很大,可以是任何azAZ09字符、任何长度等。这些子目录的命名没有“共识”。
  • 你可以给我目录的 nema 是目录 001、002 等,或者它必须是硬编码的
  • “给我目录的 nema 是目录 001、002 等”: 使用 getcwd() 或类似的 php 函数来自动识别当前工作目录/路径或 - 不太可取 - 只使用c:\aaa(我尽量避免在我执行脚本的每一棵新树上手动输入路径)。
猜你喜欢
  • 2019-01-22
  • 2017-07-19
  • 1970-01-01
  • 2020-06-17
  • 2013-02-12
  • 2022-07-02
  • 1970-01-01
  • 2013-04-30
  • 2013-08-05
相关资源
最近更新 更多