上書きせずにバッチファイルのコピーと移動


2

私は、バックグラウンドで実行するバッチファイルを作成して、同じ名前の宛先のファイルを上書きせずに単一のファイルをコピーしてから、ファイルを移動します。同じ名前の宛先?

現時点ではこれを使用していますが、上書きされています。

copy %1 dest
move %1 dest

回答:


2

これを試してください。単一のファイルに対して機能します。

エコーN | コピー/ -Y file1 file2

エコーN | 移動/ -Y file1 file2

興味深いことに、ワイルドカードでも動作するようです。それをx64 Windows 7でテストしました。


1

コピーしたばかりの同じファイルを移動することの意味がわかりませんが、ファイルが存在するかどうかをテストするには、次のようなバッチスクリプトで「IF」ステートメントを使用します。(%〜についてさらに詳しく説明します。)

IF EXIST %~dp2%~nx1 (echo file exists) ELSE (
robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV>>testing.txt)

以下は、Windows 7、Windows 8、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012で動作します。

(XPの場合、リソースキットから取得する必要がありますが、その宝石に残っているのはわずか30日間です:))

次のコードは、宛先ファイルが存在しない場合にのみ、ソースディレクトリから宛先ディレクトリにファイルをコピーします。

robocopy source_path dest_path filename /XN /XO

/ MOVを追加すると、ファイルが移動します。

パラメータを使用する場合、コマンドは次のようになります。

copyscript.bat C:\Dir1\filename.ext D:\path2\

copyscript.batが次のように見える場合:

robocopy %~dp1 %~dp2 %~nx1 /XN /XO

出力をログに送信する場合は、次のように>> logfile.txtを追加します。

robocopy %~dp1 %~dp2 %~nx1 /XN /XO>>logfile.txt 

コピーの代わりにファイルを移動する場合は、次のようにします。

robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV 
  • %〜dp1は、最初のパラメーターのディレクトリとパスに相当します
  • %〜dp2は、2番目のパラメーターのディレクトリとパスに相当します
  • %〜nx1は、ファイル名と1番目のパラメーターの拡張子に相当します
  • / XNは、コピー中に新しいファイルを除外します
  • / XOは、コピー中に古いファイルを除外します
  • / MOV単にコピーするのではなく、ファイルを移動します
  • cmdウィンドウの代わりに出力結果をファイルに追加します(毎回ログを上書きする場合は、1つのみを使用します)

  • デフォルトでは、日付と時刻のスタンプが同じ場合、robocopyはファイルを上書きしません。

Simon Sheppardのサイトは優れたバッチスクリプトリソースです。引数の構文はこちらです。 http://ss64.com/nt/syntax-args.html

Microsoftのロボコピー情報はこちらhttp://technet.microsoft.com/en-us/library/cc733145.aspx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.