Board logo

标题: [文件操作] 求修改统计文件夹内的图片视频数量总大小的批处理代码 [打印本页]

作者: 阿七    时间: 2021-12-9 23:44     标题: 求修改统计文件夹内的图片视频数量总大小的批处理代码

现在运行批处理的结果是:
AAA文件夹[37P+1V 162MB]
BBB文件夹[0P+4V 162MB]
CCC文件夹[37P+0V 162MB]

我想让文件夹内如果没有图片的话就不显示“0P+”,没有视频的话就不显示“+0V”。如下:
AAA文件夹[37P+1V 162MB]
BBB文件夹[4V 162MB]
CCC文件夹[37P 162MB]


这是刚刚在论坛看到的@zaqmlp大佬的代码,我联系他并没有回我便发帖求助各位大佬们
  1. <# :
  2. cls
  3. @echo off
  4. set info=互助互利,支付宝扫码头像,感谢赞助
  5. rem 有问题,可加QQ956535081及时沟通
  6. title %info%
  7. set "rootpath=%~dp0"
  8. if "%rootpath:~-1%" equ "\" (set "rootpath=%rootpath:~,-1%")
  9. cd /d "%rootpath%"
  10. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%rootpath%'"
  11. echo;%info%
  12. pause
  13. exit
  14. #>
  15. $path=$args[0];
  16. $pext=@('.jpg', '.jpeg', '.png', '.bmp', '.gif');
  17. $vext=@('.mp4', '.avi', '.rmvb', '.mov', '.wmv','.m2t');
  18. function formatsize($z){
  19.     $t='';
  20.     if($z -ge 1073741824){
  21.         $t=($z/1073741824).toString('0.00GB');
  22.     }else{
  23.         if($z -ge 1048576){
  24.             $t=($z/1048576).toString('0MB');
  25.         }else{
  26.             if($z -ge 1024){
  27.                 $t=($z/1024).toString('0KB');
  28.             }else{
  29.                 $t=($z).toString()+'B';
  30.             };
  31.         };
  32.     };
  33.     return $t;
  34. };
  35. $folders=@(dir -liter $path -recurse|?{$_ -is [System.IO.DirectoryInfo]}|sort {$_.FullName.length} -des);
  36. for($i=0;$i -lt $folders.length;$i++){
  37.     $files=@(dir -liter $folders[$i].FullName -recurse|?{$_ -is [System.IO.FileInfo]});
  38.     $p=0;$v=0;$ps=0;$vs=0;$s=0;
  39.     for($j=0;$j -lt $files.length;$j++){
  40.         if($pext -contains $files[$j].Extension){
  41.             $p++;
  42.             $ps+=$files[$j].length;
  43.         }else{
  44.             if($vext -contains $files[$j].Extension){
  45.                 $v++;
  46.                 $vs+=$files[$j].length;
  47.             };
  48.         };
  49.     };
  50.     $s=$ps+$vs;
  51.     $oldname=$folders[$i].Name;
  52.     $newname=($oldname -replace '\[\d+p\d+v \d+(\.\d+)?(G|M|K)?B\]$','')+'['+$p+'P+'+$v+'V '+(formatsize $s)+']';
  53.     if($newname -ne $oldname){
  54.         write-host ($folders[$i].FullName+' --> '+$newname);
  55.         mv -liter $folders[$i].FullName ($folders[$i].Parent.FullName+'\'+$newname);
  56.     };
  57. };
复制代码

作者: 小小菜鸟    时间: 2021-12-10 11:09

54行下面添加一行
  1. $newname=$newname -replace "0P+", "" -replace "+0V", ""
复制代码

作者: 阿七    时间: 2021-12-10 12:38

本帖最后由 阿七 于 2021-12-10 19:21 编辑

回复 2# 小小菜鸟


您好,我测试了一下,如果图片和视频是整数的话,如:20P,10V。处理出来就会变成:2、1




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2