如何从列表中删除文件?

时间:2011-10-11 19:42:42

标签: xcopy

我有一个使用哈希算法来组织文件的文件系统。我过去曾使用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后删除它们?

谢谢!

3 个答案:

答案 0 :(得分: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"
)

答案 1 :(得分:1)

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

答案 2 :(得分:1)

从外观上看,您可以使用move命令代替 xcopy ,因为您没有使用 xcopy 中的任何扩展功能。 '/ d'应该仅用于复制文件,如果它们更新,不确定它是否有用,因为你想要删除它们。否则,移动没有更多可供选择的选项。

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

希望这会有所帮助。虽然如前所述仅使用del也可以正常工作。