批处理之家's Archiver

pichuli23 发表于 2020-2-25 21:44

批处理怎样按文件夹内图片视频数量修改文件名?

怎么批量统计出文件夹下的 图片数量 视频数量 和文件夹大小,并自动附加到文件夹名之后啊???就像“aaa10p12v  100m”这样子

Batcher 发表于 2020-2-26 00:09

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=226786&ptid=54924]1#[/url] [i]pichuli23[/i] [/b]


    图片和视频分别是哪几种文件扩展名?

zaqmlp 发表于 2020-2-26 17:21

[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]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.