如何批量删除同名文件中大的那个?
bat吧
全部回复
仅看楼主
level 1
洪东强 楼主
拍的视频比较多,占用空间很大。
找了个视频压缩软件,压缩完有的视频变小了,有的视频反而变大了。
我现在把压缩前后的视频都改成相同名字了,在不同文件夹,有几千个。
请问如何批量删除同名视频中大的那个?
2021年05月07日 03点05分 1
level 9
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls&echo off&mode con lines=3000
rem 查找出两个指定文件夹下相同名称的文件中大小/占用空间最大的一个
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder1="D:\xxx\文件夹1";
$folder2="D:\xxx\文件夹2";
$arr=@($folder1,$folder2);
$dic=New-Object 'System.Collections.Generic.Dictionary[string,Object]';
for($i=0;$i -lt $arr.length;$i++){
if(-not (test-path -liter $arr[$i])){
write-host ('"'+$arr[$i]+'" 未找到');
}else{
$files=@(dir -liter $arr[$i] -recurse|?{$_ -is [System.IO.FileInfo]});
for($j=0;$j -lt $files.length;$j++){
$fn=$files[$j].Name.toLower();
if(-not $dic.ContainsKey($fn)){
$brr=New-Object -TypeName System.Collections.ArrayList;
$dic.Add($fn,$brr);
}
[void]$dic[$fn].add($files[$j]);
}
}
}
foreach($k in $dic.Keys){
if($dic[$k].count -ge 2){
$crr=@($dic[$k]|sort {$_.length} -Descending);$crr[0].FullName;
}
}
2021年05月07日 12点05分 3
level 1
@璐村惂鐢ㄦ埛_000076K馃惥 off
set d1=D:\bat\test
set d2=D:\bat\test2
for %%a in (%d1%\*.*) do forfiles /P %d2% /S /M "%%~nxa"* /C "cmd /c if %%~za gtr @fsize (del /S /Q %%a) else (del /S /Q @path)"
pause
2021年05月10日 06点05分 4
1