• ベストアンサー

1つのファイルを 100 のフォルダに一括コピーするには?

1つのディレクトリ内に 100 のフォルダがあり それぞれに index.html をコピーしようと思ってるのですが、 効率の良い方法ありますでしょうか? category1 category2 category3 ... コマンドプロンプトで copy index.html C:\001\category*\ としてみましたが ここでワイルドカードは使えないようです。 vbs などでも、なにか良い方法ありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

#3です。 >実際はフォルダごとに少し名前が違うので、 >ワイルドカードの代わりになるようなものは >ありますでしょうか? FORのヘルプを見るとわかりますが /D オプションでディレクトリ名をワイルドカードで指定出来ます。 例えばcategoryから始まる名前のディレクトリなら FOR /D %d IN (category*) DO copy index.html %d の様な感じになります。

yasu182
質問者

お礼

うまくいきました! 手軽に書けて面白いですね。 もっと練習してみます!!

その他の回答 (3)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

DOSのFOR文を使えば簡単です。 FOR /?でヘルプを見てみましょう。 とりあえず、index.htmlをcategory1~category100までコピーする文はこうなります。 FOR /L %i IN (1,1,100) DO copy index.html category%i ※BATに書く場合は%iを%%iにする必要があります

yasu182
質問者

お礼

DOS のループは使ったことがなかったので もっと調べてみようと思います。 ありがとうございます!! 実際はフォルダごとに少し名前が違うので、 ワイルドカードの代わりになるようなものは ありますでしょうか? 問題は解決したので参考までに。

noname#35109
noname#35109
回答No.2

ドライブC の直下にある 001 フォルダ内の index.html を, ドライブC の直下にある 001 フォルダ内の category1 ~ category3 フォルダにコピーする場合,  ドライブC     └ 001(フォルダ)       ├ index.html - - - - - - → ↓コピー       ├ category1(フォルダ) - <index.html>       ├ category2(フォルダ) - <index.html>       └ category3(フォルダ) - <index.html> VBS は次のようになります。 -------------------------------------------- Set fso = CreateObject("Scripting.FileSystemObject") For i=1 To 3 fso.CopyFile "C:\001\index.html", "c:\001\category" & i & "\" Next -------------------------------------------- category1 ~ category100 であれば, For i=1 To 100 にすれば良いだけです。 ファイル操作編(016~027) ■ WSH.016 ファイルのコピー http://www1.u-netsurf.ne.jp/~tomo_c/tips/WSH003.html#WSH016

yasu182
質問者

お礼

ありがとうございます!! とても勉強になりました。 vbs はまだ経験不足なので いろいろ調べてみようと思います。 実際はフォルダごとに少し名前が違うので loop は使えないのですが、ディレクトリ内の ファイルを取得することは可能でしょうか? アルファベット数は 3 文字と決まってます。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

Excelを起動し、A1に「copy index.html 」と記入。 B1に「C:\001\category1」と記入して、A1とB1セルを選択して下にコピー。categoryの数字が自動的に増えていくので100行までコピー。 A1:B100を選択し、Ctrl+Cでクリップボードにコピー。 メモ帳を起動し、Ctrl+Vで貼り付け。バッチファイルができるので、適当な名前(copy_index.batなど)をつけてindex.htmlのあるフォルダに保存。 バッチファイルを実行。 これでいかがでしょうか。

yasu182
質問者

お礼

Excel でバッチファイルを書くというのは 初めてだったのですがとても面白いですね。 実際はフォルダごとに少し名前が違ったので getName.bat の中に dir/b > list.txt と入れて Excel にペーストでうまくいきました。 ありがとうございました!!

関連するQ&A