- ベストアンサー
Windowsのバッチで全階層のファイルを移動する方法
- Windowsのバッチを使用して、全階層のファイルを別のフォルダに移動する方法について教えてください。
- フォルダ構成をそのまま移動しながら、拡張子が異なるファイルを処理する方法を知りたいです。
- 現在、xcopyを使用してフォルダを移動していますが、個別のファイルに対しての処理ができない状況です。
- みんなの回答 (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 なファイル名を生成し、 それを表示してるだけですので、処理内容に応じて適宜書き変えて下さい。
その他の回答 (2)
- mtaka2
- ベストアンサー率73% (867/1179)
以下のバッチファイルで、階層的に全ディレクトリ中の「*.txt」を見つけ出して、「*.tst」にリネームできます。 ---ここから--- for /R %%f in ( *.txt ) do ren %%f *.tst ---ここまで--- このままだと、バッチファイルを実行した時のカレントディレクトリが起点になりますが、たとえば、 ---ここから--- for /R C:\ %%f in ( *.txt ) do ren %%f *.tst ---ここまで--- のように、起点を指定(この場合C:\)してファイルを探すことも出来ます。
補足
繰り返しになりますが、アプリケーションを通してファイルを変換するので、 コピーしてリネームしてという訳ではありません。 説明不足でした。 アプリケーションを通して変換したファイルのみを、別フォルダにフォルダ構造ごと 移したいと思っています。 元ファイルと同一フォルダ内で変換してから、xcopyで移せばいいのでしょうか。
- 0909union
- ベストアンサー率39% (325/818)
xcopy /? を見ればわかります。聞く前にヘルプ見ようね。
補足
アプリケーションを通してファイルを変換するので、コピーしてリネームしてという訳ではありません。 説明不足でした。
お礼
なるほど、何とかなりそうです。 ありがとうございました。