0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【WIndowsBAT】相対指定フォルダからファイルを抽出してコピー先にスレッドで並列コピー実行

Last updated at Posted at 2024-09-09
ThreadCopy.bat
REM REM@echo off
REM 排他制御・多重度制御をしていないので、端末フリーズに気を付けたし
REM 「一つのフォルダにほぼ同時に複数データがセットされた場合のフォルダ監視機能」の仕様調査目的で作成。
SETLOCAL ENABLEDELAYEDEXPANSION
REM ### ログファイルに出力する各種メッセージを定義(開始、処理中、終了)
set Message_START=Logging task START.
set Message_ProcessStart=Process END
set Message_ProcessEnd=Process END
set Message_END=Logging task END.
REM 文字がコマンドとして扱われないように全角に
set Message_Copy=―>

REM 確認対象フォルダをここにセットする
set C_MOTO=.\copy_moto
set C_TARGET=..\copy_saki

REM ログディレクトリ定義
set LOGDIR=.\work\log\


REM ログディレクトリの作成
mkdir %LOGDIR%
REM cd %LOGDIR%
REM %HOSTN%へホスト名を定義する
set HOSTN=%COMPUTERNAME%
REM 日付をyyymmdd形式で取得する。
set yyyyMMdd=%date:/=%
set hhmmss=%time::=%
set hhmmss=%hhmmss:~0,6%
set logfile=%LOGDIR%%HOSTN%_%yyyyMMdd%_%hhmmss%.log

REM 「C:\work\log\ホスト名_yyyymmdd_hhmmss.log」にコマンド結果を出力する。
REM ### 開始ログ出力
echo %date:/=-% %time:.=,%0 %Message_START% >> "%logfile%" 2>&1

REM ### 処理ログ出力
echo %date:/=-% %time:.=,%0 %Message_ProcessStart% >> "%logfile%" 2>&1

REM cd %C_MOTO%
for /R %C_MOTO% %%f in ("*") do ( 
REM for内は都度日付を取らないと同じ値がセットされるので記載方法を変えている
echo %date:/=-% %time:.=,%0 %%f %Message_Copy% %C_TARGET% >> "%logfile%" 2>&1
start xcopy /D /I /Y "%%f" %C_TARGET%
)

REM ### 処理結果ログ出力
REM echo 'Result of Process': %Message_Processing% >> "%logfile%" 2>&1
echo %date:/=-% %time:.=,%0 %Message_ProcessEnd% >> "%logfile%" 2>&1

REM ### 終了ログ出力
echo %date:/=-% %time:.=,%0 %Message_END% >> "%logfile%" 2>&1

pause
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?