找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14477|回复: 2

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

[复制链接]
发表于 2021-12-9 23:44:59 | 显示全部楼层 |阅读模式
现在运行批处理的结果是:
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:56 | 显示全部楼层
54行下面添加一行
  1. $newname=$newname -replace "0P+", "" -replace "+0V", ""
复制代码
 楼主| 发表于 2021-12-10 12:38:26 | 显示全部楼层
本帖最后由 阿七 于 2021-12-10 19:21 编辑

回复 2# 小小菜鸟


您好,我测试了一下,如果图片和视频是整数的话,如:20P,10V。处理出来就会变成:2、1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:56 , Processed in 0.028299 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表