• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:全階層のファイルを検索して処理(Windows))

Windowsのバッチで全階層のファイルを移動する方法

このQ&Aのポイント
  • Windowsのバッチを使用して、全階層のファイルを別のフォルダに移動する方法について教えてください。
  • フォルダ構成をそのまま移動しながら、拡張子が異なるファイルを処理する方法を知りたいです。
  • 現在、xcopyを使用してフォルダを移動していますが、個別のファイルに対しての処理ができない状況です。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.3

> アプリケーションを通して変換したファイルのみを、別フォルダにフォルダ構造ごと移したいと思っています。 なるほど。じゃあこんな感じで。 ---ここから--- @echo off setlocal enableextensions setlocal enabledelayedexpansion rem 処理元フォルダ set srcfolder=c:\aaa rem 処理元フォルダの文字数 set srcfolderlen=6 rem 処理元ファイルの拡張子 set srcext=.txt rem 処理元ファイルの拡張子の文字数 set srcextlen=4 rem 処理先フォルダ set dstfolder=c:\ccc rem 処理先ファイルの拡張子 set dstext=.tst for /R %srcfolder% %%f in ( *%srcext% ) do ( set src=%%f set dst=%dstfolder%!src:~%srcfolderlen%,-%srcextlen%!%dstext% rem ディレクトリ作成。ちょっと泥臭いです mkdir !dst! rmdir !dst! rem 処理コマンド(!src!は処理元ファイル、!dst!は処理先ファイルが入る) echo !src!→!dst! ) ---ここまで--- C:\AAA 中の*.txt から、同じディレクトリ構成でC:\CCC下の*.tst なファイル名を生成し、 それを表示してるだけですので、処理内容に応じて適宜書き変えて下さい。

cra20mog
質問者

お礼

なるほど、何とかなりそうです。 ありがとうございました。

その他の回答 (2)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

以下のバッチファイルで、階層的に全ディレクトリ中の「*.txt」を見つけ出して、「*.tst」にリネームできます。 ---ここから--- for /R %%f in ( *.txt ) do ren %%f *.tst ---ここまで--- このままだと、バッチファイルを実行した時のカレントディレクトリが起点になりますが、たとえば、 ---ここから--- for /R C:\ %%f in ( *.txt ) do ren %%f *.tst ---ここまで--- のように、起点を指定(この場合C:\)してファイルを探すことも出来ます。

cra20mog
質問者

補足

繰り返しになりますが、アプリケーションを通してファイルを変換するので、 コピーしてリネームしてという訳ではありません。 説明不足でした。 アプリケーションを通して変換したファイルのみを、別フォルダにフォルダ構造ごと 移したいと思っています。 元ファイルと同一フォルダ内で変換してから、xcopyで移せばいいのでしょうか。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

xcopy /? を見ればわかります。聞く前にヘルプ見ようね。

cra20mog
質問者

補足

アプリケーションを通してファイルを変換するので、コピーしてリネームしてという訳ではありません。 説明不足でした。