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

我不熟悉 Windows(自 1993 年以来我很高兴使用 Gnu/Linux),但也许您可以在del %n某处添加一些带有变量的命令(或者用您自己的文件替换 xcopy .bat做您想做的事)

于 2011-10-24T17:20:05.343 回答
1

从外观上看,您可以使用move命令而不是xcopy,因为您没有使用xcopy的任何扩展功能。'/d' 应该仅用于复制较新的文件,不确定这对您的目的有多大用处,因为您想删除它们。否则,移动没有更多的选择可言。

另一种可能的、稍微复杂一点的方法是robocopy。复制后将同时删除文件夹和文件,并且
robocopy /MOVE /XO "Z:\%i\%j\%k" "Y:\%i\%j\%k"
标志将旧文件排除在复制之外。主要在较新的操作系统(即不是 XP)中可用。您可以查看上述参考以获取更多详细信息。/MOVE/XOrobocopy

希望这可以帮助。虽然,del正如前面提到的那样使用也应该可以正常工作。

于 2011-10-27T02:02:24.393 回答