今回はファイルのコピーを行ってくれるバッチファイルを紹介します。
ただコピーしてくるだけではなんなので以下の点の機能を追加しています。
・指定したパス以降の対象ファイルを自動的に検索して取得してくる。
・list.txtに記載された複数のファイルを一括で取得してくる。
以下がソースです。
@echo off set /P FROM_PATH="取得元フォルダを入力してください" set TO_PATH=%~dp0 set START_TIME=%DATE% %TIME% cd %FROM_PATH% for /f "tokens=*" %%i in (%TO_PATH%\list.txt) do ( echo %%i call :doget "%%i" ) pause exit :doget for /f "tokens=*" %%a in ('dir %1 /b /s /a:-h') do ( echo 【%START_TIME%】%%a >> %TO_PATH%結果.txt echo 元ファイル %%a copy /y "%%a" "%TO_PATH%" ) exit /b
echoやオプションなどの細かい箇所は省きますが、6~9行目の
for /f "tokens=*" %%i in (%TO_PATH%\list.txt) do ( echo %%i call :doget "%%i" )
にて、list.txtの中身を検索対象として次の取得処理に渡しています。
"tokens=*"をつけないとスペースが入ってるファイルを正しく取得できないので注意。
後は以下の箇所で渡されたファイル名をdirコマンドで検索し、コピーしてきます。
for /f "tokens=*" %%a in ('dir %1 /b /s /a:-h') do ( echo 【%START_TIME%】%%a >> %TO_PATH%結果.txt echo 元ファイル %%a copy /y "%%a" "%TO_PATH%" )
実行するとこんな感じになります。
copyのコマンドを変えて逆に配置したり、別のコマンドにしたりすることなんかもできると思います。