我想洗掉相同大小的檔案并保留不同的檔案,但我的代碼無法正常作業。我該如何解決。
@echo off
for /r %%i in (.\*) do (
setlocal ENABLEDELAYEDEXPANSION
set /a count=0
set /a fsize=%%~zi
for /r %%j in (.\*) do (
setlocal ENABLEDELAYEDEXPANSION
if %%~zj EQU !fsize!
set /a count=count 1
if !count! GTR 1
del %%j ))
endlocal
pause
uj5u.com熱心網友回復:
有不少問題。if 之前的命令應該在同一行。你不能在回圈delayedexpansion
內部做兩個 sfor
而不結束它們,endlocal
因為擴展會運行得太深。
所以你只需要一個delayedexpansion
回圈外。這里的主要問題是第二個回圈中的計數始終為 2 或更多,因為第二個回圈for
再次開始遞回搜索,并且每個檔案都將匹配自身,包括batch-file
:
@echo off
setlocal enabledelayedexpansion
for /r %%i in (*) do (
if not "%%~i" == "%~f0" (
set "fsize=%%~zi"
for /r %%j in (*) do (
if !fsize! equ %%~zj if not "%%~j" == "%%~i" if exist "%%~i" del "%%~i"
)
)
)
但是,您必須注意,這將遞回到子檔案夾中,因為for /R
例如,如果檔案存在于 6KB 的根目錄中,并且子檔案夾中的檔案也有 6KB 的大小,它將洗掉根檔案并將檔案保留在子檔案夾。它將洗掉所有檔案,但串列中大小相同的檔案除外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/469183.html
上一篇:膽汁檔案輸出到非結構化文本檔案