Board logo

标题: [文件操作] 批处理怎样按文件夹内图片视频数量修改文件名? [打印本页]

作者: pichuli23    时间: 2020-2-25 21:44     标题: 批处理怎样按文件夹内图片视频数量修改文件名?

怎么批量统计出文件夹下的 图片数量 视频数量 和文件夹大小,并自动附加到文件夹名之后啊???就像“aaa10p12v  100m”这样子
作者: Batcher    时间: 2020-2-26 00:09

回复 1# pichuli23


    图片和视频分别是哪几种文件扩展名?
作者: zaqmlp    时间: 2020-2-26 17:21

本帖最后由 zaqmlp 于 2021-12-24 16:09 编辑
  1. <# :
  2. cls&echo off
  3. set "rootpath=%~dp0"
  4. if "%rootpath:~-1%" equ "\" (set "rootpath=%rootpath:~,-1%")
  5. cd /d "%rootpath%"
  6. powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%rootpath%'"
  7. pause
  8. exit
  9. #>
  10. $path=$args[0];
  11. $pext=@('.jpg', '.jpeg', '.png', '.bmp', '.gif');
  12. $vext=@('.mp4', '.avi', '.rmvb', '.mov', '.wmv');
  13. function formatsize($z){
  14.     $t='';
  15.     if($z -ge 1073741824){
  16.         $t=($z/1073741824).toString('0.00GB');
  17.     }else{
  18.         if($z -ge 1048576){
  19.             $t=($z/1048576).toString('0.00MB');
  20.         }else{
  21.             if($z -ge 1024){
  22.                 $t=($z/1024).toString('0.00KB');
  23.             }else{
  24.                 $t=($z).toString()+'B';
  25.             };
  26.         };
  27.     };
  28.     return $t;
  29. };
  30. $folders=@(dir -liter $path -recurse|?{$_ -is [System.IO.DirectoryInfo]}|sort {$_.FullName.length} -des);
  31. for($i=0;$i -lt $folders.length;$i++){
  32.     $files=@(dir -liter $folders[$i].FullName -recurse|?{$_ -is [System.IO.FileInfo]});
  33.     $p=0;$v=0;$ps=0;$vs=0;$s=0;
  34.     for($j=0;$j -lt $files.length;$j++){
  35.         if($pext -contains $files[$j].Extension){
  36.             $p++;
  37.             $ps+=$files[$j].length;
  38.         }else{
  39.             if($vext -contains $files[$j].Extension){
  40.                 $v++;
  41.                 $vs+=$files[$j].length;
  42.             };
  43.         };
  44.     };
  45.     $s=$ps+$vs;
  46.     $oldname=$folders[$i].Name;
  47.     $newname=($oldname -replace '\[\d+p\d+v \d+(\.\d+)?(G|M|K)?B\]$','')+'['+$p+'p'+$v+'v '+(formatsize $s)+']';
  48.     if($newname -ne $oldname){
  49.         write-host ($folders[$i].FullName+' --> '+$newname);
  50.         mv -liter $folders[$i].FullName ($folders[$i].Parent.FullName+'\'+$newname);
  51.     };
  52. };
复制代码





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