I looking for a way using windows batch file that call sub-batch file which pass 1-9 parameters and return value (string) without the need of saving the return value into fi
You're missing a couple things:
This character ` not this character '
On an american english keyboard, the backtick is shift-tilde, which is usually to the left of the 1 in the number row.
@FOR /F "usebackq tokens=*" %%i IN (`%find_OS_version%`) DO SET OS_VER=%%i