5

ハッシュアルゴリズムを使用してファイルを整理するファイルシステムがあります。私は過去にxcopyを使用して、すべてのファイルのリストを含むファイルを渡し、それを反復処理することにより、ファイルを別の場所にコピーしました。スクリプトは次のようになります。

for /f "delims=, tokens=1,2,3" %i in (D:\foo.csv) 
do echo F | xcopy /i /d "Z:\%i\%j\%k" "Y:\%i\%j\%k" >> "D:\xcopy\Log.txt"

しかし、ファイルで提供されているファイルをコピーするだけでなく、foo.csvそれらも削除したいという状況に遭遇しました。xcopyのドキュメントを調べましたが、何も見つかりませんでした。xcopyを使用した後に同じファイルのリストを調べてそれらを削除するために別のスクリプトを実行する必要がある場合でも、どういうわけかこれを達成できますか?

ありがとう!

4

3 に答える 3

2

for括弧を使用して、オペランドによって実行される複数のコマンドを示すことができます。

for /f "delims=, tokens=1,2,3" %%i in (D:\foo.csv) do (
    echo F | xcopy /i /d "Z:\%%i\%%j\%%k" "Y:\%%i\%%j\%%k" >> "D:\xcopy\Log.txt"
    del /F "Z:\%%i\%%j\%%k"
)
于 2011-10-24T17:23:33.997 に答える
1

xcopyの拡張機能を使用していないため、外観からはxcopyの代わりにmoveコマンドを使用できます。'/ d'は、ファイルが新しい場合にのみファイルをコピーするために使用されることになっています。ファイルを削除したいので、それが目的にどれほど役立つかはわかりません。そうでなければ、moveにはそれ以上の選択肢がありません。

もう1つの可能な、少し洗練された方法はrobocopyです。
robocopy /MOVE /XO "Z:\%i\%j\%k" "Y:\%i\%j\%k"
/MOVEコピー後にフォルダとファイルの両方を削除し、/XOフラグは古いファイルをコピーから除外します。robocopy主に新しいオペレーティングシステム(つまり、XPではない)で利用できます。詳細については、上記のリファレンスを確認してください。

お役に立てれば。delただし、前述のように使用するだけでも問題なく動作するはずです。

于 2011-10-27T02:02:24.393 に答える
1

私はWindowsに精通していません(1993年以来Gnu / Linuxを喜んで使用しています)が、おそらくdel %nどこかのような変数でコマンドを追加することができます(またはxcopyをあなた .batが望むことをするあなた自身のファイルに置き換えてください)

于 2011-10-24T17:20:05.343 に答える