![ディレクトリのサブディレクトリを調べて、特定の拡張子のファイルを新しいフォルダにコピーできますか?](https://rvso.com/image/1595495/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E3%82%B5%E3%83%96%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%80%81%E7%89%B9%E5%AE%9A%E3%81%AE%E6%8B%A1%E5%BC%B5%E5%AD%90%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%96%B0%E3%81%97%E3%81%84%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
初心者ですが、ディレクトリ内のサブディレクトリを検索して特定の拡張子を持つすべてのファイルを見つけ、それを新しいディレクトリに移動するターミナル スクリプトがありますが、Windows では動作しないようです。
find ./ -name '*.xlsx' -exec cp -prv '{}' \Documents\...' ";"
MATLAB または Windows スクリプトの他の方法を使用して同じことができるかどうか疑問に思っていました。私の最終的な目標は、これらすべての xlsx ファイルのデータを 1 つのファイルに統合することです。ご協力ありがとうございます。
答え1
cmd.exe でディレクトリをループするには:
for /r "C:\Your\Directory" %A in (*.xlsx) do (move /y "%A" "C:\New\Directory\%~nxA")
in/r
は、FOR
指定されたディレクトリ内にあるすべてのファイルをループします。in/y
は、move
ファイルを移動してもよいかどうかを尋ねるプロンプトを抑制します。スペースがある場合に備えて、ファイル/ディレクトリ パスを引用符で囲むのがベスト プラクティスです。デフォルトでは、サブフォルダをループします。
参照:FORループコマンド
バッチソリューションが必要な場合は、次のような変数を使用して設定することをお勧めします。
@echo off
set "old=C:\Your\Directory"
set "new=C:\New\Directory"
for /r "%old%" %%A in (*.xlsx) do (
move /y "%%A" "%new%\%%~nxA"
)
pause
バッチと通常のコマンドラインとの主な違いは (私の意見では)、同じファイル内でパスを複数回変更する必要がなく、戻って変数を編集するだけで微調整が少し簡単になる点です。また、バッチ ファイルではパラメータ%A
が変更されることにも注意してください。%%A