现在运行批处理的结果是:
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大佬的代码,我联系他并没有回我便发帖求助各位大佬们- <# :
- cls
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- 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%'"
- echo;%info%
- pause
- exit
- #>
- $path=$args[0];
- $pext=@('.jpg', '.jpeg', '.png', '.bmp', '.gif');
- $vext=@('.mp4', '.avi', '.rmvb', '.mov', '.wmv','.m2t');
-
- function formatsize($z){
- $t='';
- if($z -ge 1073741824){
- $t=($z/1073741824).toString('0.00GB');
- }else{
- if($z -ge 1048576){
- $t=($z/1048576).toString('0MB');
- }else{
- if($z -ge 1024){
- $t=($z/1024).toString('0KB');
- }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);
- };
- };
复制代码
|