批量创建一组子文件夹在几个文件夹中

时间:2012-03-06 14:39:56

标签: windows batch-file cmd

我的目标是创建一组包含相同子文件夹的文件夹。自1881年以来,我每年都需要一个文件夹,每年文件夹应该每月包含一个文件夹,每个月文件夹应该每天包含一个文件夹。

我找到了一个创建文件夹多年的工具,我现在的挑战是用子文件夹填充它们。我想在Windows客户端计算机上执行此操作,最好不要安装任何内容。

我一直致力于使用FOR和MD命令来完成这项工作。这是我到目前为止的代码:

SET %g=*.*
FOR /d %var IN %path% DO MKDIR 01 02 03

每当我运行这个时,我都会收到此错误:

  

%path%此时出乎意料

所以,这就是我现在所处的地方。我很感激你能给我的任何帮助!

2 个答案:

答案 0 :(得分:6)

对不起P.A.你的解决方案是正确的,我无法抗拒添加一些代码来创造每月正确天数的诱惑。

@echo off
setlocal EnableDelayedExpansion
set m=0
for %%d in (31 28 31 30 31 30 31 31 30 31 30 31) do (
   set /A m+=1
   set daysInMonth[!m!]=%%d
)
pushd d:\dest
for /L %%y in (1881,1,2012) do (
   mkdir %%y
   pushd %%y
   for /L %%m in (1,1,12) do (
      mkdir %%m
      pushd %%m
      set days=!daysInMonth[%%m]!
      if %%m == 2 (
         set /A yMod4=%%y %% 4, yMod100=%%y %% 100, yMod400=%%y %% 400
         if !yMod4! == 0 (
            set /A days+=1
            if !yMod100! == 0 if not !yMod400! == 0 (
               set /A days-=1
            )
         )
      )
      for /L %%d in (1,1,!days!) do (
         mkdir %%d
      )
      popd
   )
   popd
)
popd

以前的代码在闰年增加1天至2月,也就是说,如果年份可以被4整除,但是在百年年份只有它可以被400整除.1600和2000年是闰年,但是1700,1800和1900年没有。

答案 1 :(得分:3)

首先,阅读HELP FOR,然后从某事开始,在命令行中尝试这个

  for /l %a in (1881,1,2012) do @echo %a

现在你已经湿了,添加一些香料

  for /l %a in (1881,1,2012) do @for /l %b in (1,1,12) do @echo %a-%b

你差不多完成了

  for /l %a in (1881,1,2012) do @for /l %b in (1,1,12) do @for /l %c in (1,1,31) do @echo %a-%b-%c

唯一剩下的就是将echo转换为合适的mkdir并添加一些咒语将其翻译成BAT文件....

@echo off
pushd d:\dest
for /l %%a in (1881,1,2012) do (
  mkdir %%a
  pushd %%a
  for /l %%b in (1,1,12) do (
     mkdir %%b
     pushd %%b
     for /l %%c in (1,1,31) do (
       mkdir %%c
     )
     popd
  )
  popd
)
popd

但是,请注意,这将变得非常疯狂!