我想写一个批处理文件,它将删除两个文件夹之间的文件重叠。
换句话说,我希望它说“从文件夹A中移除所有也出现在文件夹B中的文件”。
从SQL的角度来看,它会像
DELETE FROM FOLDERA WHERE EXISTS(SELECT FILE FROM FOLDERB)
但我希望在Windows文件系统中实现这一目标。
答案 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
)