我的目标是创建一组包含相同子文件夹的文件夹。自1881年以来,我每年都需要一个文件夹,每年文件夹应该每月包含一个文件夹,每个月文件夹应该每天包含一个文件夹。
我找到了一个创建文件夹多年的工具,我现在的挑战是用子文件夹填充它们。我想在Windows客户端计算机上执行此操作,最好不要安装任何内容。
我一直致力于使用FOR和MD命令来完成这项工作。这是我到目前为止的代码:
SET %g=*.*
FOR /d %var IN %path% DO MKDIR 01 02 03
每当我运行这个时,我都会收到此错误:
%path%此时出乎意料
所以,这就是我现在所处的地方。我很感激你能给我的任何帮助!
答案 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
但是,请注意,这将变得非常疯狂!