Advertisement
IcarusLives

Difference in Functions and Macros

Jun 10th, 2017
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 1.14 KB | None | 0 0
  1. @echo off & setlocal enableDelayedExpansion
  2.  
  3. call :macros
  4.  
  5. %calculateAverage% 42 23 12 5 49
  6. call :calculateAverage 32 73 62 25 19
  7. pause & exit
  8.  
  9.  
  10.  
  11.  
  12. REM :calculateAverage FUNCTION
  13. :calculateAverage
  14.            if %5 gtr 0 ( set "div=5"
  15.     ) else if %4 gtr 0 ( set "div=4"
  16.     ) else if %3 gtr 0 ( set "div=3"
  17.     ) else if %2 gtr 0 ( set "div=2"
  18.     ) else if %1 gtr 0  set "div=1"
  19.     set /a "sum=%1 + %2 + %3 + %4 + %5", "avg=sum / div"
  20.     echo The average is !avg!
  21. goto :eof
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. :macros
  29. set ^"LF=^
  30.  
  31. ^" Above empty line is required - do not remove
  32. set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
  33.  
  34. REM %calculateAverage% function MACRO
  35. set calculateAverage=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-5" %%1 in ("^!args^!") do (%\n%
  36.            if %%5 gtr 0 ( set "div=5"%\n%
  37.     ) else if %%4 gtr 0 ( set "div=4"%\n%
  38.     ) else if %%3 gtr 0 ( set "div=3"%\n%
  39.     ) else if %%2 gtr 0 ( set "div=2"%\n%
  40.     ) else if %%1 gtr 0  set "div=1"%\n%
  41.     set /a "sum=%%1 + %%2 + %%3 + %%4 + %%5"%\n%
  42.     for /f "tokens=1,2" %%a in ("^!sum^! ^!div^!") do (%\n%
  43.         set /a "avg=%%a / %%b"%\n%
  44.         for /f %%0 in ("^!avg^!") do echo The average is %%0%\n%
  45.     )%\n%
  46. )) else set args=
  47. goto :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement