批量搜索和删除文件夹和存档

时间:2017-08-29 11:12:23

标签: batch-file

我需要帮助解决下一个问题。 我有两个目录D1和D2,都有一个subdir和文件树。两者都相似,但D1的文件多于D2,这些是垃圾文件。

我想要一个批次:

  1. 搜索D1并列出所有内容。
  2. 与D2比较,如果不存在,则从D1中删除。
  3. 制作回音>> log.txt中哪些文件/文件夹被删除。
  4. 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先检查文件夹(反向排序以避免当前文件夹已被删除)

@Echo off &Setlocal EnableDealyedExpansion
Set "D1=Q:\Test\2017\08\"
Set "D2=C:\Test\2017\08\"

For /f "delims=" %%A in ('Dir /B/S/AD ^| Sort /r') Do (
    Set "ThisDirD1=%%A"
    Set "ThisDirD2=!ThisDirD1:%D1%=%D2%!"
    if Not Exist "!ThisDirD2!" (
        Echo Deleting !ThisDirD1! as !!ThisDirD2! doesn't exist
        Echo RD /Q /Y "!ThisDirD1!"
    )
)

如果输出看起来没问题,请删除RD命令前面的回显。

对于其余文件,重复相同的步骤。

For /f "delims=" %%A in ('Dir /B/S/A-D ') Do (
    Set "ThisFileD1=%%A"
    Set "ThisFileD2=!ThisFileD1:%D1%=%D2%!"
    if Not Exist "!ThisFileD2!" (
        Echo Deleting !ThisFileD1! as !!ThisFileD2! doesn't exist
        Echo Del "!ThisFileD1!"
    )
)