Claro que se puede, existen maneras de hacer funciones en batch, todo ello combinando el comando call, las etiquetas, goto :EOF, las variables de expansion, etc....
Pero lo que tu preguntas no es como pasar parametros a otras funciones y/o ejecutables.
Un ejemplo es usar el netcat para hacer un troyano con batch, entonces le pasamos parametros al netcat, o tambien pasamos parametros a los comandos que no se encuentrar en el cmd.exe
Para mostrar algo en el bloc de notas:
notepad [ruta archivo]
Si no existe lo crea.
Para poder pasar parametros a otros programas deben de admitir parametros, como:
Bat 1
@echo off
set /p var=Escribe tu nombre :
call bat2.bat %var%
Bat 2
@echo off
echo Tu nombre es: %1
goto :EOF
Si pones los dos bats en la misma carpeta y abres el bat 1 veras el resultado.
Hay un exelente manual de hendrix en este foro acerca de como pasar funciones entre bat's,ese manual esta basado en uno que hizo SDK.
Un bat admite los parametros %x, siendo x un numero del 1 al 10.
En total admite 10 parametros.
%0 = ruta del bat.
Un ejemplo de bat.
@echo off
if .%1==. (
echo Sintaxis:
echo rg -d [ruta del archivo]
echo rg -c [ruta original] [ruta]
echo.
echo.
echo -d Borra un archivo
echo -c Copia un archivo
echo.
)
if %1%==-d del /q /s %2
if %1%==-c (copy %2 %3) ELSE echo Error
Ya ves de que van las cosas.
Acerca del buscador, es posible hacer uno en batch, ya hize yo uno que me parece mejor que el windows, ya que cuando se ha hecho la lista de los archivos las busquedas duran muchisimo menos de un segundo.
Acerca de otros .exe tambien les podras pasar parametros.
Para iniciar una ventana oculta:
start /B [ruta]
EL comando start es muy interesante, tambien te permite darle la maxima prioridad a un proceso, muy util en virus.