如何编写将删除另一个目录中存在的所有文件的批处理文件?

时间:2011-09-20 19:39:50

标签: batch-file

我想写一个批处理文件,它将删除两个文件夹之间的文件重叠。

换句话说,我希望它说“从文件夹A中移除所有也出现在文件夹B中的文件”。

从SQL的角度来看,它会像

DELETE FROM FOLDERA WHERE EXISTS(SELECT FILE FROM FOLDERB)

但我希望在Windows文件系统中实现这一目标。

3 个答案:

答案 0 :(得分:1)

回答我自己的问题:

set if_it_exists_here=C:\folderB
set then_delete_it_there=C:\folderA
cd "%if_it_exists_here%"
FOR /F "tokens=*" %%G IN ('dir *.* /b /a:-d') DO del "%then_delete_it_there%\%%G"

答案 1 :(得分:1)

SET if_it_exists_here=C:\folderB
SET then_delete_it_there=C:\folderA
CD "%if_it_exists_here%"
FOR %%A IN (*.*) DO (
 IF EXIST "%then_delete_it_there%\%%~nxA" DEL /Q /F %then_delete_it_there%\%%~nxA
)

答案 2 :(得分:0)

在Mechaflash的答案的基础上,这是一个与UNC路径一起使用的版本。

SET if_it_exists_here=\\server1\some\folder
SET then_delete_it_there=\\server2\some\folder
CD "%if_it_exists_here%"
FOR %%A IN ("%if_it_exists_here%\*.*") DO (
 IF EXIST "%then_delete_it_there%\%%~nxA" DEL /Q /F %then_delete_it_there%\%%~nxA
)