[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
代码比较长
  1. @echo off&setlocal enabledelayedexpansion
  2. set str1=998555947008
  3. set str2=1000202272768
  4. set u=2
  5. for %%i in (str1 str2) do if "!%%i:~,1!" == "-" set /a d+=1
  6. if "%d%" == "1" (set d=-) else set "d="
  7. set l=00000000&for /l %%i in (1 1 7) do set "l=!l!!l!"
  8. set "var=4096 2048 1024 512 256 128 64 32 16 8 4 2 1"
  9. for /l %%i in (1 1 2) do (
  10.     set "str%%i=!str%%i:-=!"
  11.     set /a "n=str%%i_2=0"
  12.     for %%a in (!str%%i:.^= !) do (
  13.         set /a n+=1
  14.         set s=s%%a&set str%%i_!n!=0
  15.         for %%b in (%var%) do if "!S:~%%b!" neq "" set/a str%%i_!n!+=%%b&set "S=!S:~%%b!"
  16.         set /a len%%i+=str%%i_!n!
  17.     )
  18.         set str%%i=!str%%i:.=!
  19. )
  20. if !str1_2! gtr !str2_2! (set /a len2+=str1_2-str2_2) else set /a len1+=str2_2-str1_2
  21. for /l %%i in (1 1 2) do (
  22.     set str%%i=!str%%i!!l!
  23.     for %%j in (!len%%i!) do set " str%%i=!str%%i:~,%%j!"
  24. )
  25. for /f "tokens=* delims=0" %%i in ("!str2!") do set s=%%i&set "str2=0%%i"
  26. set len2=1
  27. for %%j in (%var%) do if "!S:~%%j!" neq "" set/a len2+=%%j&set "S=!S:~%%j!"
  28. set /a len=len2+1
  29. if !len1! lss !len2! set len1=!len2!&set "str1=!l:~-%len2%,-%len1%!!str1!"
  30. set /a len1+=u&set str1=0!str1!!l:~,%u%!
  31. set str=!str1:~,%len2%!
  32. set "i=0000000!str2!"&set /a Len_i=Len2+7
  33. for /l %%i in (1 1 9) do (
  34.     set "T=0"
  35.     for /l %%j in (8 8 !Len_i!) do (
  36.         set /a "T=1!i:~-%%j,8!*%%i+T"
  37.         set Num%%i=!T:~-8!!Num%%i!&set /a "T=!T:~,-8!-%%i"
  38.     )
  39.     set Num%%i=!T!!Num%%i!
  40.     set "Num%%i=0000000!Num%%i:~-%Len%!"
  41. )
  42. for /L %%a in (!len2! 1 !Len1!) do (
  43.     set "str=!L!!str!!str1:~%%a,1!"
  44.     set "str=!str:~-%Len%!"
  45.     if "!str!" geq "!str2!" (
  46.        set M=1&set i=0000000!str!
  47.        for /l %%i in (2 1 9) do if "!i!" geq "!Num%%i!" set "M=%%i"
  48.            set sun=!sun!!M!&set str=&set T=0
  49.            for %%i in (!M!) do (
  50.                for /l %%j in (8 8 !Len_i!) do (
  51.                    set /a "T=3!i:~-%%j,8!-1!Num%%i:~-%%j,8!-!T:~,1!%%2"
  52.                    set "str=!T:~1!!str!"
  53.                )
  54.            )
  55.     ) else set sun=!sun!0
  56. )
  57.      set sun=!sun:~,-%u%!.!sun:~-%u%!
  58. echo %d%!sun!
  59. pause
复制代码
1

评分人数

    • 522235677: bat用到炉火纯青地步了,佩服啊技术 + 1

TOP

回复 4# strolley
  1. @echo off&setlocal enabledelayedexpansion
  2. call:division 998555947008 1000202272768 quot 2
  3. echo %quot%
  4. pause&exit
  5. :division
  6. setlocal
  7. set str1=%1
  8. set str2=%2
  9. if "%~4" neq "" set u=%4
  10. for %%i in (str1 str2) do if "!%%i:~,1!" == "-" set /a d+=1
  11. if "%d%" == "1" (set d=-) else set "d="
  12. set l=00000000&for /l %%i in (1 1 7) do set "l=!l!!l!"
  13. set "var=4096 2048 1024 512 256 128 64 32 16 8 4 2 1"
  14. for /l %%i in (1 1 2) do (
  15.     set "str%%i=!str%%i:-=!"
  16.     set /a "n=str%%i_2=0"
  17.     for %%a in (!str%%i:.^= !) do (
  18.         set /a n+=1
  19.         set s=s%%a&set str%%i_!n!=0
  20.         for %%b in (%var%) do if "!S:~%%b!" neq "" set/a str%%i_!n!+=%%b&set "S=!S:~%%b!"
  21.         set /a len%%i+=str%%i_!n!
  22.     )
  23.         set str%%i=!str%%i:.=!
  24. )
  25. if !str1_2! gtr !str2_2! (set /a len2+=str1_2-str2_2) else set /a len1+=str2_2-str1_2
  26. for /l %%i in (1 1 2) do (
  27.     set str%%i=!str%%i!!l!
  28.     for %%j in (!len%%i!) do set " str%%i=!str%%i:~,%%j!"
  29. )
  30. for /f "tokens=* delims=0" %%i in ("!str2!") do set s=%%i&set "str2=0%%i"
  31. set len2=1
  32. for %%j in (%var%) do if "!S:~%%j!" neq "" set/a len2+=%%j&set "S=!S:~%%j!"
  33. set /a len=len2+1
  34. if !len1! lss !len2! set len1=!len2!&set "str1=!l:~-%len2%,-%len1%!!str1!"
  35. set /a len1+=u&set str1=0!str1!!l:~,%u%!
  36. set str=!str1:~,%len2%!
  37. set "i=0000000!str2!"&set /a Len_i=Len2+7
  38. for /l %%i in (1 1 9) do (
  39.     set "T=0"
  40.     for /l %%j in (8 8 !Len_i!) do (
  41.         set /a "T=1!i:~-%%j,8!*%%i+T"
  42.         set Num%%i=!T:~-8!!Num%%i!&set /a "T=!T:~,-8!-%%i"
  43.     )
  44.     set Num%%i=!T!!Num%%i!
  45.     set "Num%%i=0000000!Num%%i:~-%Len%!"
  46. )
  47. for /L %%a in (!len2! 1 !Len1!) do (
  48.     set "str=!L!!str!!str1:~%%a,1!"
  49.     set "str=!str:~-%Len%!"
  50.     if "!str!" geq "!str2!" (
  51.        set M=1&set i=0000000!str!
  52.        for /l %%i in (2 1 9) do if "!i!" geq "!Num%%i!" set "M=%%i"
  53.            set sun=!sun!!M!&set str=&set T=0
  54.            for %%i in (!M!) do (
  55.                for /l %%j in (8 8 !Len_i!) do (
  56.                    set /a "T=3!i:~-%%j,8!-1!Num%%i:~-%%j,8!-!T:~,1!%%2"
  57.                    set "str=!T:~1!!str!"
  58.                )
  59.            )
  60.     ) else set sun=!sun!0
  61. )
  62. if defined u if "%u%" gtr "0" set sun=!sun:~,-%u%!.!sun:~-%u%!
  63. endlocal&set %3=%d%%sun%
复制代码

TOP

回复 7# strolley
不清楚你的工作环境 我这里 XP win7 测试通过
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo 11111111111
  4. for /f "skip=1 tokens=1,2,3 delims= " %%i in ('wmic logicaldisk where "drivetype=3" get name^,size^,freespace') do (
  5.     for /f %%a in ("%%i") do (
  6.         set /a n+=1
  7.         echo 盘符 %%j 剩余:%%i 空间%%k
  8.         set  AAA=%%i
  9.         set  BBB=%%k
  10.         rem 循环取值
  11.         call:division !AAA! !BBB! quot 2
  12.         echo 盘符%%j  剩余为%%i  使用率为!quot!
  13.     )
  14. )
  15. pause&exit
复制代码

TOP

返回列表