【问题标题】:How to make "n" level folder tree by mkdir -p or bat script on windows?如何在 Windows 上通过 mkdir -p 或 bat 脚本制作“n”级文件夹树?
【发布时间】:2015-05-27 14:48:42
【问题描述】:

您可能知道, md -p 可以创建一个树文件夹,例如: mkdir -p

但是如何通过bat等脚本创建一个“n”深的文件夹呢?

目录树示例: - C:\ -- 001 --- 002 ---- 003 ..................... ----- n

还是谢谢 漫游者

【问题讨论】:

  • 你怎么知道你要调用什么子目录?还是字面意思是 001/002/003/etc?
  • cmd 的mkdir / md 命令已经等同于Unix mkdir -p。没有“-p”选项。

标签: windows batch-file mkdir


【解决方案1】:

此脚本将在彼此内部创建 999 个文件夹(从 001 到 999):

@ECHO OFF
FOR /L %%i IN (1,1,999) DO (
    IF %%i LSS 10 (
        MD 00%%i
        CD 00%%i
    ) ELSE (
        IF %%i LSS 100 (
            MD 0%%i
            CD 0%%i
        ) ELSE (
            MD %%i
            CD %%i
        )
    )
)
PAUSE

【讨论】:

  • 或者以这种更简单的方式:for /L %%i in (1001,1,1999) do (set i=%%i & md !i:~1! & cd !i:~1!),但生成的文件夹可能会超过 Windows 支持的名称的最大长度。
  • 谢谢迈克尔斯!你就是答案!
【解决方案2】:
 ( for /l %a in (1 1 10) do md %a & cd %a ) & cd "%cd%"

从命令行使用。要在批处理文件中使用它,需要对百分号进行转义,将%a 替换为%%a

对于填充版本,您可以使用

cmd /v /c "for /l %a in (1001 1 1005) do (set "x=%a" & md !x:~-3! & cd !x:~-3!)"

【讨论】:

  • 谢谢 MC ND!你就是答案!
  • 根据你的解释,我的理解是: [For bat] for /l %%a in (1 1 10) do md %%a & cd %%a & cd "%cd%"
  • @SkyRover,代码中的括号是必须的。当for 结束创建层次结构时,应执行最后一个cd "%cd%"(简单地返回起点)。
【解决方案3】:

如果启用了命令扩展(默认),那么MD 命令将在给定路径中创建所有中间目录(如果它们不存在),因此您只需输入如下内容:

md C:\001\002\003

【讨论】:

  • 感谢 Aacini,我知道 md 可以创建所有目录,但如果我需要手动输入创建 100 级,则浪费时间.....
猜你喜欢
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2020-04-15
  • 2011-09-08
相关资源
最近更新 更多