回答:
あなたはチェックするべきですrobocopy
、それはよりもはるかに強力ですxcopy
。/MOV
またはでファイルを簡単に移動できます/MOVE
。
ファイルのみを移動するには(コピー後にソースから削除)
robocopy from_folder to_folder files_to_copy /MOV
ファイルとディレクトリを移動するには(コピー後にソースから削除)
robocopy from_folder to_folder files_to_copy /MOVE
verify
私が見ることができる範囲ではありません。
/MOVE : Move files and dirs (delete from source after copying)
。コピーしない場合、ソースは削除されません。
verify
です。robocopy情報に、2つのファイルサイズが実際に移動されたのではなく、正しく移動されたことを確認するものは何もありません。
バッチファイルを使用してXcopy
コマンドを検証で実行した後、Xcopyから返されたエラーレベルをチェックして、ファイルが正常にコピーされたかどうかを判断できます。存在する場合は、ソースを削除します。
Xcopyのドキュメントから:
Exit
code Description
==== ===========
0 Files were copied without error.
1 No files were found to copy.
2 The user pressed CTRL+C to terminate xcopy.
4 Initialization error occurred. There is not
enough memory or disk space, or you entered
an invalid drive name or invalid syntax on
the command line.
5 Disk write error occurred.
バッチの例:
Rem Attempt file copy...
xcopy /D /V %1 %2
Rem Check result code and if it was successful (0), delete the source.
if errorlevel 0 (
echo Copy completed successfully
del /Q %1
exit /B
)
Rem Not Errorlevel 0...
echo Copy failed for some reason.
errorlevel
私がやっている場合はまだ動作:dir args && xcopy args >> logfile.txt
?またはerrorlevel
の結果dir
でしょうか?
if errorlevel 0
常にトリガーします。それは本当にチェックしているif errorlevel >= 0
ので、代わりにエラーケースをチェックするべきif errorlevel 1 ( ... failure case ... ) else ( ... success case ... )
です。または、スタイルをご希望の場合またはスタイルをご希望のif not errorlevel 0 (... success case ... )
場合if %ERRORLEVEL% EQU 0 ( ... success case ... )
/v
しても、ファイルが正しく書き込まれたことを保証するものではないことに注意してください。ディスクキャッシュとOSキャッシュは、書き込みキャッシュ内のファイルが正常にコミットされる前にそこから取得されることを意味します。安全な唯一のオプションは、コピーを作成し、検証のスケジュールを設定し、後で削除することです。ヒューリスティックに5分で十分だと思いますが、ディスクアクティビティとキャッシュのサイズによって異なります(私はキャッシュされた書き込みエラーに遭遇した人として話しています)。