[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 5# walkercolin





0P0V0G这三个0在任何情况下都是不可能出现的
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2024-8-8 10:28 编辑

回复 4# walkercolin

更正》2楼批处代码应置于 ‘图片+视频子目录’ 的上一级目录中运行,如同一楼代码的运行位置
模拟一楼题型的文件及目录,用2楼代码已测试通过...

TOP

回复 3# 77七
输出结果为[0P0V-0GB]

TOP

回复 2# aloha20200628
输出结果为[0P0V-0GB]

TOP

本帖最后由 77七 于 2024-8-8 01:10 编辑

批处理统计文件夹内图片、视频数量及大小,并重命名文件夹
  1. @echo off
  2. rem 保存为ansi编码
  3. cd /d "%~dp0"
  4. rem 排除特定文件(000,00.1,00.2,00.3),不需要可以删除下一行
  5. set "_f=^|findstr /rvix /c:"00\.[123]\.[jpb][pnm][gp]" /c:"000\.[jpb][pnm][gp]""
  6. (for /f "delims=" %%d in ('dir /b /ad') do (
  7. setlocal
  8. pushd "%%d"
  9. for /f %%a in ('dir /b /a-d *.jpg *.png *.bmp %_f% ^|find /c /v ""') do (
  10. set /a "1/%%a" && set P=%%aP
  11. )
  12. for /f %%a in ('dir /b /a-d *.mp4 *.avi *.mov *.mkv ^|find /c /v ""') do (
  13. set /a "1/%%a" && set V=%%aV
  14. )
  15. for /f "tokens=3" %%i in ('dir /-c /a-d *.jpg *.png *.bmp *.mp4 *.avi *.mov *.mkv ^|findstr /iec:" 字节"') do (
  16. for /f "tokens=1-2 delims=." %%a in ('powershell -c "$input = %%i; [math]::Round($input / (1024 * 1024 *1024), 2)"') do (
  17. set /a "1/%%a" && set "Z=%%a.%%bG" || for /f "delims=." %%c in ('powershell -c "%%i/1024/1024"') do set Z=%%cM
  18. )
  19. )
  20. popd
  21. if defined Z (
  22. call echo ren "%%d" "%%d [%%p%%%%V%%-%%Z%%]"
  23. )
  24. endlocal
  25. )) 2>nul
  26. pause
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2024-8-7 20:52 编辑

回复 1# walkercolin

以下代码存为 test.bat 置于图片和视频文件所在目录下运行...
批处只能处理不超过2GB的文件尺寸值,超出此限须调用外部计算方法解决,以下代码调用powershell方法(仅因其句式简捷)
运行结果会对每个目标目录更名,其更名格式》“原目录名 [xxxPyyyV-zzzMB]” 或 “原目录名 [xxxPyyyV-zzzGB]”,其中 xxx 或 yyy 可能=0(对应图片或视频文件数量=0)
  1. @echo off &setlocal enabledelayedexpansion &for /d %%d in (*) do (
  2. pushd "%%d" &set/a "np=0,zp=0,nv=0,zv=0"
  3. for /f "tokens=1-2 delims=个文件 " %%a in (
  4. '2^>nul dir /a-d/-c *.jpg *.png *.bmp^|find " 个文件 " ') do (set "np=%%a"&set "zp=%%b")
  5. for /f "tokens=1-2 delims=个文件 " %%a in (
  6. '2^>nul dir /a-d/-c *.mp4 *.avi *.mov *.mkv^|find " 个文件 " ') do (set "nv=%%a"&set "zv=%%b")
  7. for /f %%v in (
  8. ' powershell "if((!zp!+!zv!) -lt 1gb){[math]::round(-(!zp!+!zv!)/1mb,2)}else{[math]::round((!zp!+!zv!)/1gb,2)}" ') do set "zpv=%%v"
  9. if "!zpv:~0,1!"=="-" (set "zpv=!zpv:~1!MB") else (set "zpv=!zpv!GB")
  10. popd & ren "%%~fd" "%%d [!np!P!nv!V-!zpv!]"
  11. )
  12. endlocal&pause&exit/b
复制代码
1

评分人数

TOP

返回列表