批处理文件以查找重复文件并删除欺骗

时间:2014-09-22 19:14:16

标签: windows batch-file cmd duplicates

我有一些非常接近我需要的代码,但我无法弄清楚删除部分。这需要创建为.bat文件的代码。

我想做以下事情:

  1. 检查文件夹中的文件。
  2. 检查第二个文件夹,如果第二个文件夹中的文件名与原始文件夹相同,则将其从第二个文件夹中删除(仅限)。
  3. 检查第三个文件夹,如果第三个文件夹与原始文件夹具有相同的文件名,请将其从第三个文件夹中删除(仅限)。
  4. 这非常适合将任何重复文件复制到新目录:

    for %%F in ("E:\Temp only\dupe test\Holding Area\**") do (
        if exist "E:\Temp only\dupe test\Stock Folder\%%~nxF" copy "%%~fF" "E:\Temp only\dupe test\Destination\%%~nxF"
        if exist "E:\Temp only\dupe test\Special\%%~nxF" copy "%%~fF" "E:\Temp only\dupe test\Destination\%%~nxF"
    )
    

    因此,我不需要“复制”到新文件夹,而是需要从欺骗存在的文件夹中删除重复文件。第一个文件夹是要检查的“原始”文件,并且永远不应该从那里删除文件

    如果可以,请帮忙。非常感谢!

3 个答案:

答案 0 :(得分:1)

@echo off 

setlocal 

set "source_folder=E:\Temp only\dupe test\Holding Area" 
set "folder2=E:\Temp only\dupe test\Stock Folder" 
set "folder1=E:\Temp only\dupe test\Special" 

set "log_file=.\log.txt" 

setlocal enableDelayedExpansion
for %%F in ("%source_folder%\*") do ( 

    if exist "%folder2%\%%~nxF" ( 
        echo deleting "%folder2%\%%~nxF"  at !date! !time!
        del /q /f "%folder2%\%%~nxF" 
        if exist "%folder2%\%%~nxF" echo deleting failed 

    )>> "%log_file%" 

    if exist "%folder1%\%%~nxF" ( 
        echo deleting "%folder1%\%%~nxF" at !date! !time! 
        del /q /f "%folder1%\%%~nxF" 
        if exist "%folder1%\%%~nxF" echo deleting failed 
    )>> "%log_file%" 
) 
endlocal
endlocal

答案 1 :(得分:0)

我想我想出来了。无论如何,这似乎都有效。如果您发现我可能忽略的任何问题,请告诉我。

for %%F in ("E:\Temp only\dupe test\Holding Area\**") do (
if exist "E:\Temp only\dupe test\Stock Folder\%%~nxF" del "E:\Temp only\dupe test\Stock Folder\%%~nxF" 
if exist "E:\Temp only\dupe test\Special\%%~nxF" del "E:\Temp only\dupe test\Special\%%~nxF" 
)

答案 2 :(得分:0)

我有类似的情况,当有同名的PDF可用时,我需要删除一个tif文件。这是一个5行批处理文件代码。

<Image>

将此代码放在批处理文件中并提供根文件夹。批处理过程将查看所有文件和子文件夹,并删除所有tif文件。

相关问题