2012-03-06 18 views
0

私の目標は、同じサブフォルダを持つ一連のフォルダを作成することです。私は1881年以来毎年1つのフォルダが必要です。各年のフォルダには月ごとのフォルダが含まれ、各月のフォルダには1日あたりのフォルダが含まれている必要があります。複数のフォルダにサブフォルダのセットを一括作成する

私は長年にわたってフォルダを作成するツールを見つけましたが、私の挑戦はそれらにサブフォルダを設定することです。私はWindowsクライアントコンピュータで、何もインストールせずにこれを実行したいと考えています。

私が取り組んできたことは、仕事をするためにFORコマンドとMDコマンドを使用していることです。私はこれを実行するたびに、私はこのエラーを取得する

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

::私は今stuchよどこ

%path% was unexpected at this time

だから、つまりここでは、私がこれまで持っているコードです。私はあなたが私に与えることができる任意のヘルプに感謝します!

答えて

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ですappropiate 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 

しかし、警告され、これは非常にクレイジー成長します!

+0

+1ですが、毎月31日のフォルダを作成します。 – Aacini

+0

pushd/popdとmkdirは、最も内側のループでのみ必要です: 'mkdir d:\ dest \ %% a \ %% b \ %% c' – dbenham

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 

前のコード年が4で割り切れるが、centurial年で、それは400 1600年と2000年でも割り切れる場合にだけ、つまり、うるう年では2月に1日追加はうるう年だったが、 1700、1800および1900はそうではなかった。

+0

+1常に正しい答えですが、あなたのうるう年の例外のうちの1つが使用されることは間違いありませんか? – jeb

+0

@jeb:1900年と2000年の年間フォルダを作成する必要があります。また、これについて考えてみましょう。バッチファイルは30年以上前に発明されました。だから、誰が2100を知っていますか? :) – Aacini

+0

+1私より優れています! –