需求:删除某个文件夹下重复的文件。例如文件名后带(1)(2)等等
脚本:
@echo off
rem 指定需要删除重复文件的目录。目录中不能有中文
set "dir=D:\Program Files (x86)\Tencent\WeChat Files\WeChat Files\wxid_uymfyk3nafnu22\FileStorage\File\2023-09"
:: 将目录下的所有文件名导入 src_file_name.txt 文件
for /r "%dir%" %%i in (*.*) do echo "%dir%\%%i" >> src_file_name.txt
:: 将删除的文件名导入 del_file_name.txt 文件,并计数
set /a cnt = 0
for /r "%dir%" %%i in (*"(1)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
:: 不能直接删除)的这种,会误删
for /r "%dir%" %%i in (*"(2)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
for /r "%dir%" %%i in (*"(3)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
for /r "%dir%" %%i in (*"(4)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
for /r "%dir%" %%i in (*"(5)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
for /r "%dir%" %%i in (*"(6)".*) do ( echo "%dir%\%%i" >> del_file_name.txt
del /a /f /q "%%i"
set /a cnt+=1)
echo "The number of Deleted file: %cnt%" >> del_file_name.txt
timeout /t 2 >nul
说明:
指定一个目录(不能包含中文),生成两个记录文件,执行删除文件,最后2s后关闭
参考: