• ベストアンサー

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

  • VBSで作成したフォルダにファイルをコピー出来ない

    いつもお世話になっております。 表題に関してなのですが、VBSでFileSystemObjectを利用してフォルダを作り、 そのフォルダにファイルをコピーするという内容のスクリプトを作成しています。 ですが、フォルダは無事に出来るのですが、ファイルをコピーしようとすると、 「書き込み出来ません」 と出て、コピーされません。 fso.CopyFileのところで、エラーが発生してるようです。 CopyFileメソッドの代わりにCopyコマンドで実行するように記述すると 問題なくコピーされます。 解決方法等ございましたら、ご教授ねがいます。

  • ファイルコピー

    $copyF = 'hoge/index.html'; $copyF2 = 'hoge/copy/index.html'; copy($copyF , $copyF2); コピー元ディレクトリより下のディレクトリにファイルコピーを したいのですが、上のコードだとうまくいきません。 ディレクトリを超えてのコピーは無理ですか?

    • 締切済み
    • PHP
  • 複数フォルダ内のファイルを一括コピーする方法

    環境はWindows7です。 下記構成のファイルを一括で特定のフォルダにコピーする方法を探しています。 C\aaa\111.txt C\aaa\112.txt ・・・ C\bbb\121.txt C\ccc\33.txt ------------------ ⇒C\ddd 配下へコピーしたい 方法(1):F3で「.txt」で検索してヒットしたものを一括でコピーする。 方法(2):.batファイルを使ってやる。 方法(2)について、下記のように書いてみました。 REM 複数フォルダーの不特定多数のファイルを特定フォルダーにコピーする pause cd %~dp0 dir /b No* >list.txt for /F %%i in ( list.txt ) do copy /y %%i\*.txt 特定フォルダー pause カレントディレクトリにある複数フォルダ名をlist.txtに出力し、 それをまた読み込んでforを使って特定フォルダーにコピーする。 これだと同名のファイルがあった場合でも問答無用でどんどん上書きされてしまいます。 「コピーするが両方のファイルを保持する」状態にしたいんですが、 何か方法はないでしょうか・・・?

  • 複数のファイルをコピーして別フォルダに貼り付けたい

    複数のファイルをコピーして別フォルダに貼り付けたいのですが、やり方がわかりません。 100近いファイルがあるので、コマンドプロンプトを使おうと思い、ネットで調べたのですがわかりませんでした。(ひとつのファイルならできました。) 複数のファイルをコピーさせる際、 copy (コピー元のファイル) (コピー先のフォルダ) で、コピー元のファイルを複数指定したいのですが、*で指定するのではなく、個別に複数指定したいのです。+を使うと結合されてしまうし、,もだめ。;もだめ。 番号順に3、4、5、・・・となっているファイルの23、24、25だけをコピーして貼り付けたい場合、どうすればよいのでしょうか?

  • 1ファイルを指定フォルダに再帰的にコピーしたい

    とある1ファイルを指定ディレクトリ配下へ再帰的にコピーしたいのですが、 Dosのコマンドプロンプトでそのような事は可能でしょうか?

  • Windowsのフォルダ・ファイルのコピーでの強制上書きする方法につい

    Windowsのフォルダ・ファイルのコピーでの強制上書きする方法について。 WindowsXPを使っているのですが、フォルダ・ファイルをコピーするときに コピー先に同じフォルダ・ファイルがあると、上書き確認ダイアログが表示されるのですが この上書き確認ダイアログを表示せずに、強制上書きする方法は有りますでしょうか。? ネットで調べたら、cpコマンドをコマンドプロンプトで行う方法はあるようなのですが、 できればコマンドプロンプトではなく、GUIでやりたいです。 よろしくお願いいたします。

  • VBSによるファイルコピー

    教えてください。 Aフォルダの中にファイルが3つ有るとします。 あ.jpg い.jpg COPY.VBS Aフォルダ内 COPY.VBS を実行すると、 あ.jpg→C:\ い.jpg→C:\PIC とファイルを異なる場所に移動したいのです。 上記の処理をする場合、Aフォルダがどちらか 決まった場所に置いて有る(C:\等)の場合は 解るのですが、実行者がAフォルダをどこに 置き実行するか解りません、VBSから見たときに 自分(vbs)と同じフォルダに有るファイル と言うパスで上記のファイル移動を実現する事は 可能でしょうか? 以上よろしくお願いします。

  • 多数のサブディレクトリ内のファイルを一括コピーする

    コマンドプロンプトについて初心者ですがよろしくお願いします。 多数のサブディレクトリとフォルダ名もバラバに異なる中から特定のファイル(.txt)のみを全てを一括しコピーしたいのですがバッチファイルを使用した方法を教えてください。 (コピー元 C:)             (コピー先F:) \AA ∟\aa ∟aa.txt                aa.txt \BB ∟\bb ∟bb.txt        ⇒       bb.txt \CC ∟\cc   ∟ cc.txt               cc.txt

  • フォルダ内のファイルを取得し別ディレクトリへコピーしたい

    Windowであるフォルダ内の全てのファイルを取得して、別のディレクトリのフォルダへコピーしたいです。 バッチコマンドでできれば一番いいのですが、そんな機能をもっているコマンドはないみたいなので、VBスクリプトでも構いません。 いい方法ないでしょうか?

  • Q>Windowsでファイルをコピーする処理の作り方を教えて

    こんばんは。WindowsXPで動作するバッチについて教えてください。 コマンドプロンプトかPerl、ExcelVBA、あるいは他の方法で以下の処理をするバッチを作りたいと思っています。 //------------------------------------- (1)WindowsXPのPC(PC1)で一定時間間隔(1時間おきくらい)に起動する。 (2)別のPC(PC2)にネットワーク接続する。 (3)PC2の特定のフォルダに特定のファイルがあったらPC1にコピーする。 ただしそのファイルがすでにPC1にあったら上書きしない。 //------------------------------------- (1)はWindowsのタスクスケジューラでできると思っていたのですが、 タスクの起動間隔は最低1日だったのでダメでした。 (2)はコマンドプロンプトなら NET USE コマンドでできるはず。 ですがPerlだとやり方がわかりません。 (3)は上書きしない方法がわかりません。コマンドプロンプトでCOPYするとY/Nを訊かれるし、 copy/yだと上書きされてしまいます。 他のフォルダに退避する、とか無理やりならできなくもないですが。 私はコマンドプロンプト、Perl、VBA 以外のスクリプトには慣れていないので できればこのうちのどれかでやりたいと思っています。 うまい方法はないでしょうか? 知恵をお貸しください。m(_ _)m

専門家に質問してみよう