如何用bat脚本创建多层级文件夹

如何用bat脚本创建多层级文件夹

最近突然对bat脚本感兴趣,但本身是做php开发的,网上也搜了一些资料,不过还是看不太懂,希望能有大神指点下。
虽然实现后可能没啥用,但是还是想研究下

目标

使用bat脚本实现递归创建文件夹

问题点

  1. 如何定义一个数据格式能让bat脚本可以按一定层级读取文件夹的层级
  2. 能否将第 1 点中的数据格式独立成一个文件,最好能多种语言都能识别

用PHP实现的代码

<?php
define('CURRENT_DIR',dirname(__FILE__));
$arr = [
    'a'=>[
        'bb'=>[
            'aaa',
            'bbb',
        ],
        'cc',
    ],
    'b'=>[
        'dd',
        'ee'=>[
            'ccc',
            'ddd'=>[
                'aaaa'
            ]
        ]
    ]
];

function createDir($path,$mode=0777){
    if(!file_exists($path)){
        $status = mkdir($path,$mode,true);
        if($status){
            echo '创建文件夹'.$path.'成功--$status='.$status."\n";
        }else{
            echo '创建文件夹'.$path.'失败--$status='.$status."\n";
            return false;
        }
    }else{
        echo '文件夹'.$path.'已经存在'."\n";
    }
    return true;
}

function createDirMulti($arr,$path=CURRENT_DIR){
    if(!is_array($arr) && strlen($path)<1){
        die('请先定义要创建的文件夹结构');
    }
    foreach($arr as $key=>$value){
        echo '$key='.$key."\n";
        if(is_array($value)){
            $_path = $path.DIRECTORY_SEPARATOR.$key;
            echo '这个文件夹下应该还有文件:'.$_path."\n";
            createDir($_path);
            echo '$path='.$path.'---$_path=.'.$_path."\n";
            createDirMulti($value,$_path);
        }else{
            $_path = $path.DIRECTORY_SEPARATOR.$value;
            createDir($_path);
            echo '$value='.$value.'----$path='.$path."\n";
        }
    }
}

createDirMulti($arr);

问题说明

  1. 想知道如果使用batch脚本的话,$arr这样的数据格式,该怎么去定义?
  2. 如果在php中的话 $arr 我可以独立出一个test.php文件,然后通过 return [...]; 的方式来读取独立出的这部分定义,不知道batch如何来实现这样的定义和读取
讨论数量: 4
goStruct
@echo off

setlocal enabledelayedexpansion

set "baseDir=%~1"
shift

:loop
if "%~1"=="" (
    goto endloop
) else (
    set "folderName=%~1"
    set "currentDir=!currentDir!\!folderName!"
    if not exist "!currentDir!" (
        mkdir "!currentDir!"
    )
    shift
    goto loop
)

:endloop
echo 文件夹创建完成。
pause

exit /b
1年前 评论
laydown (楼主) 1年前
goStruct (作者) 1年前
laydown (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!