フォルダ「3101」内には「index.html」があります。

同様のフォルダを40個作ります。
フォルダの名前は
「3101」
「3102」
「3103」
...
「3137」
「3138」
「3139」
「3140」
です。

簡単に作る方法を教えてください。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2013/11/16 23:06:54

ベストアンサー

id:language_and_engineering No.1

回答回数170ベストアンサー獲得回数63

下記の内容を「3101」の上のフォルダ上にhoge.batなどのファイル名で保存し,ダブルクリックで実行して下さい。
全部いっきに生成されます。動作確認済み。


@echo off


rem forループ内の環境変数を遅延展開する
SETLOCAL enabledelayedexpansion

rem 2から40まで数値を増減しながらループ
for /L %%i in (2, 1, 40) do (

  set DIR_NUM=%%i
  
  rem カウンター数値を0埋め
  if %%i LSS 10 (
    rem 遅延展開された環境変数は%ではなく!で囲む
    set DIR_NUM=0!DIR_NUM!
  )
  
  rem フォルダの名前
  set DIR_NAME=31!DIR_NUM!
  echo !DIR_NAME!を生成します。
  
  rem ディレクトリをコピー
  xcopy .\3101 .\!DIR_NAME! /e /c /q /y /i > nul
    rem xcopyのオプション http://www.k-tanaka.net/cmd/xcopy.php
    rem パスの最後に\は付けない http://ziddy.japan.zdnet.com/qa6056560.html
)

ENDLOCAL

echo 完了しました。

pause



コーディングのために参考にしたサイト:

BATのforループで,「0埋めされた数値」を連番で出力しよう (環境変数の遅延展開と,数値の大小比較判定の方法) - 主に言語とシステム開発に関して
http://d.hatena.ne.jp/language_and_engineering/20131116/BATLoopNumberIncrementByDelayedExpansion

他1件のコメントを見る
id:language_and_engineering

remとは、プログラムの中に説明文としてコメントを書く、という意味です。プログラムの中身をわかりやすく説明するための備忘録に過ぎませんので、その行を削除しても、プログラムの動作には支障はありません。私の場合、該当部分が正しく動作することの根拠が載っているページのURLなどをコメントに残すことが多いです。そのプログラムが正しく動くことの証明のようなものですね。 その他は、「bat rem」などでググってお調べ下さい。

2013/11/16 12:48:42
id:KoyaM

ありがとうございますm(_ _)m
とても勉強になりました!

2013/11/16 23:06:43

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません