I really like the answer by @Andriy, but I'd add one thing to make it a reusable function.
@echo off
CALL :pow 2 3 :: 8
CALL :pow 3 3 :: 27
CALL :pow 5 5 :: 3125
CALL :pow 256 3 :: 16777216
set /p=End of Script, press any key to exit...
GOTO :EOF
:: ----- Call Functions -----
:pow
SET pow=1
FOR /L %%i IN (1,1,%2) DO SET /A pow*=%1
ECHO %pow%
GOTO :EOF
P.S. You can also put the "functions" in files (for example "pow.bat", usage would be just "pow n n") and call them that way, which can be handy (especially if you start using the path variable). I've always found creating reusable functions in Batch to be the coolest but least known "feature" of the scripting language. Additionally, you'd be able to use the variable %pow% in your script (or assign it to another variable) until overwritten by calling the function again.
One last point I'd like to make is that while this is a fun exercise, there is a precision limitation to Batch.. I've found that batch fails to compute properly numbers greater than 2**31 (32 bit limitation).
Best!