• 締切済み

xcopyで変化する数字で始まるフォルダ

xcopyで、年月日で始まる名前のフォルダ内のtxtファイルを一括コピーするbatを作りたいです。 例) D:\work\20150920_aaa.1.22.3.4\b.txt → D:\work ※work/フォルダの下にあるtxtファイルを全部、D:直下にコピーしたい 年月日部分と、数字部分(バージョン情報です)は随時変化するため、 *_aaa.*.*.*.*/*.txt  という具合にワイルドカードが使えるかと思ったのですがうまくいきません。 ファイルが見つかりません、と出るのです。 このような場合、どう記述すればうまくいくでしょうか? ご指導のほどどうぞ宜しくお願い致します

みんなの回答

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.5

No4 訂正 >希望されてることを1つのバッチファイルで行うことは困難ではないかと思います ちょっと調べていたら1つのバッチファイルでも可能だという事がわかりました でもって書き直したのが以下 for /d %%D in (*_aaa*) do call :b %%D goto end :b cd %1 echo xcopy *.txt ..\ cd .. :end

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.4

書かれてる条件がちょいと不足してるような気はしますが 希望されてることを1つのバッチファイルで行うことは困難ではないかと思います 2つ組み合わせて実行すれば可能です 実際の環境の要求にきちんとあっているかわかりませんが例えば --------以下 a.bat for /d %%D in (*_aaa*) do cmd /c b %%D --------以下 b.bat cd %1 xcopy *.txt ..\ 両方のファイルをD:\WORKフォルダに作って実行させます

  • kteds
  • ベストアンサー率42% (1884/4443)
回答No.3

No.1の補足です。 質問では >work/フォルダの下にあるtxtファイルを全部、D:直下にコピーしたい >D:\work\20150920_aaa.1.22.3.4\b.txt → D:\work 補足では >実際のパスは D:\work/AAA/20150920BBB1_23_1_0/C.txt などのように、対象ファイルや実行したいことが今ひとつハッキリしません。 たとえば「実際のパスは D:\work/AAA/20150920BBB1_23_1_0/C.txt」とありますが 記述中の3か所の「/」は使えないはずですので、書いてあることが正しいのかどうか信じられません。 結局のところ実行したいことは 「D:\work\AAA フォルダ内の全てのファイルを D:\work フォルダ傘下にxcopyしたい」 ということなのですか? そうであれば xcopy D:\work\AAA D:\work でいいはずです。(添付画像参照 ) --- マイクロソフト下記サイトも参照してください。 ファイル名とファイル名の拡張子: よく寄せられる質問 http://windows.microsoft.com/ja-jp/windows/file-names-extensions-faq#1TC=windows-7 添付画像参照。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

ワイルドカードは、一番下の階層でしか使えません。 cd /d D:\work for /d %%D in (*aaa*) do copy %%D\*.txt . とか。

  • kteds
  • ベストアンサー率42% (1884/4443)
回答No.1

> *_aaa.*.*.*.*/*.txt  という具合に・・・ 「数字部分(バージョン情報です)」に使用しているピリオド(ドット)はファイル名として不適です。(最初に現れたピリオドをファイル識別子との区切りとみなされて「ファイルが見つかりません」となってしまいます) アンダーバーやハイフンにすればワイルドカードを使用しても大丈夫でしょう。

unsyrahole
質問者

お礼

cd /d D:\work for /d %%D in (*AAA*) do copy %%D\*.txt d:\work\BBB 時間かかりましたが、これでいけました!! ありがとうございまいした!

unsyrahole
質問者

補足

さっそくご教示ありがとうございます! ご教示の通り、以下のようにしてみたのですがうまくいきません。。。 xcopy D:\work\AAA\*_BBB1_*_*_*\*.txt D:\work ※実際のパスは D:\work/AAA/20150920BBB1_23_1_0/C.txt といった具合です。。 ディレクトリ名またはファイル名の構文が間違っていると返ってきます まだどこかに工夫が必要でしょうか、、m(__)m

関連するQ&A