Es posible, y hay algunas maneras diferentes de hacerlo.
1) Copia & Pega la completa "biblioteca" en cada uno de sus archivos obras, pero en realidad no es una biblioteca, y es un horror para cambiar/corregir una función de biblioteca en todos los archivos
2) incluyen una biblioteca a través de llamada-envoltorio
call batchLib.bat :length result "abcdef"
y batchLib.bat comienza con
call %*
exit /b
...
:length
...
fácil de programar, pero muy sl ow, ya que cada llamada a la biblioteca carga el lote de la biblioteca y posibles problemas con los parámetros.
3) Un "auto-carga" biblioteca BatchLibrary or how to include batch files
Se crea cada vez que un archivo por lotes temporal, combinada del código de cuenta y el código de la biblioteca.
Hace algunas funciones avanzadas en el inicio de la biblioteca, como el acceso seguro a parámetros. Pero en mi opinión también es fácil de usar
Una muestra de scripts de usuario
@echo off
REM 1. Prepare the BatchLibrary for the start command
call BatchLib.bat
REM 2. Start of the Batchlib, acquisition of the command line parameters, activates the code with the base-library
<:%BL.Start%
rem Importing more libraries ...
call :bl.import "bl_DateTime.bat"
call :bl.import "bl_String.bat"
rem Use library functions
call :bl.String.Length result abcdefghij
echo len=%result%
EDIT: Otra forma es ...
4) Una biblioteca de macros
Usted podría use macros por lotes, es fácil de incluir y usarlos.
call MacroLib.bat
set myString=abcdef
%$strLen% result,myString
echo The length of myString is %result%
¡Pero es complicado crear las macros!
Más acerca de la técnica de macro en Batch "macros" with arguments
MacroLibrary.bate
set LF=^
::Above 2 blank lines are required - do not remove
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
:::: StrLen pString pResult
set $strLen=for /L %%n in (1 1 2) do if %%n==2 (%\n%
for /F "tokens=1,2 delims=, " %%1 in ("!argv!") do (%\n%
set "str=A!%%~2!"%\n%
set "len=0"%\n%
for /l %%A in (12,-1,0) do (%\n%
set /a "len|=1<<%%A"%\n%
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"%\n%
)%\n%
for %%v in (!len!) do endlocal^&if "%%~b" neq "" (set "%%~1=%%v") else echo %%v%\n%
) %\n%
) ELSE setlocal enableDelayedExpansion ^& set argv=,
genial! Exactamente lo que estaba buscando. Definitivamente no entiendo los detalles sobre el paso de parámetros, pero lo intentaré. ¡muchas gracias! – andreas