• ベストアンサー

バッチファイルで指定拡張子以外のファイルをコピーする方法

OK Waveページ内を検索してみましたが、同じような質問をされている方がいないようでしたので、新規で質問させていただこうと思います。 ある特定のフォルダに入っているファイルを、指定した拡張子以外のファイルのみコピーしるバッチファイルを作成したいのですが、よい方法がみつかりません。 コマンドの操作方法をいろいろ調べてはみたのですが、 指定拡張子以外をコピーするようなコマンドがないようです。 例えば、c:\TEST_Aに、a.xls, b.doc, c.txtとファイルがあって、拡張子が"txt"以外のファイルをすべてc:\TEST_Bフォルダにコピーを取りたい場合、どのようにバッチファイルを組めばよいでしょうか。 以上、宜しく御願い致します。

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

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

SET SRC_DIR=C:\TEST_A SET DIST_DIR=C:\TEST_B SET EXCLUDE_FILE_EXT=.txt FOR %%F IN (%SRC_DIR%\*) DO ( IF /I NOT "%%~xF"=="%EXCLUDE_FILE_EXT%" copy "%%F" "%DIST_DIR%" ) みたいな感じでしょうか・・・ ※ファイルの拡張子の取得方法は for /? で見つけられます。

htake_0131
質問者

お礼

ご回答ありがとうございます。 先ほど、試してみたところ、動作いたしました。 ソースを書き換えれば、他にもいろいろと応用できそうです。 ありがとうございました!!

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

すでに自分で解決されたかもしれませんが、 dir /b c:\TEST_A\*.txt > exclude-list xcopy /exclude:exclude-list TEST_A TEST_B でどうでしょう? 一時ファイルが必要なのがちょっといやらしいですが。

htake_0131
質問者

お礼

一時ファイルは残りましたが、動作いたしました。 これも一つの手ですね。 参考にさせていただきます。 ありがとうございました!!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

.txt という内容のファイル c:\TEST_A\exclude.txt があれば, xcopy /exclude:c:\TEST_A\exclude.txt c:\TEST_A c:\TEST_B でいけるかもしれない.

htake_0131
質問者

補足

回答いただきありがとうございます。 早速やってみましたが、拡張子が"txt" のファイルもコピーされてしましました。 コマンドの組み方として参考になりました。

回答No.1

フォルダ丸ごと適当なフォルダ名でコピー、del *.txt、のこり丸ごと目的のフォルダへコピーではダメ?

htake_0131
質問者

補足

ご回答ありがとうございます。 少し説明不足でした。 今回の例では、c:\TESTA_ と、c:\TEST_Bは、固定して利用するフォルダを想定してます。 回答いただいた内容も一つ手ですね。 なかなかスマートにコマンドは作れないようですね・・・。

関連するQ&A