批处理怎样按文件夹内图片视频数量修改文件名?
怎么批量统计出文件夹下的 图片数量 视频数量 和文件夹大小,并自动附加到文件夹名之后啊???就像“aaa10p12v 100m”这样子 [b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=226786&ptid=54924]1#[/url] [i]pichuli23[/i] [/b]图片和视频分别是哪几种文件扩展名? [i=s] 本帖最后由 zaqmlp 于 2021-12-24 16:09 编辑 [/i]
[code]<# :
cls&echo off
set "rootpath=%~dp0"
if "%rootpath:~-1%" equ "\" (set "rootpath=%rootpath:~,-1%")
cd /d "%rootpath%"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%rootpath%'"
pause
exit
#>
$path=$args[0];
$pext=@('.jpg', '.jpeg', '.png', '.bmp', '.gif');
$vext=@('.mp4', '.avi', '.rmvb', '.mov', '.wmv');
function formatsize($z){
$t='';
if($z -ge 1073741824){
$t=($z/1073741824).toString('0.00GB');
}else{
if($z -ge 1048576){
$t=($z/1048576).toString('0.00MB');
}else{
if($z -ge 1024){
$t=($z/1024).toString('0.00KB');
}else{
$t=($z).toString()+'B';
};
};
};
return $t;
};
$folders=@(dir -liter $path -recurse|?{$_ -is [System.IO.DirectoryInfo]}|sort {$_.FullName.length} -des);
for($i=0;$i -lt $folders.length;$i++){
$files=@(dir -liter $folders[$i].FullName -recurse|?{$_ -is [System.IO.FileInfo]});
$p=0;$v=0;$ps=0;$vs=0;$s=0;
for($j=0;$j -lt $files.length;$j++){
if($pext -contains $files[$j].Extension){
$p++;
$ps+=$files[$j].length;
}else{
if($vext -contains $files[$j].Extension){
$v++;
$vs+=$files[$j].length;
};
};
};
$s=$ps+$vs;
$oldname=$folders[$i].Name;
$newname=($oldname -replace '\[\d+p\d+v \d+(\.\d+)?(G|M|K)?B\]$','')+'['+$p+'p'+$v+'v '+(formatsize $s)+']';
if($newname -ne $oldname){
write-host ($folders[$i].FullName+' --> '+$newname);
mv -liter $folders[$i].FullName ($folders[$i].Parent.FullName+'\'+$newname);
};
};[/code]
页:
[1]