Windows .bat / .cmd函数库在自己的文件?
在DOS .bat / .cmd脚本中有 a nice way to build functions.要模块化一些安装脚本,将包含函数库的文件包含到.bat / .cmd脚本中是非常好的. 我试过的是: mainscript.bat call library.bat call:function1 library.bat goto:eof :stopCalipri -- stop alle prozesse die mit calipri zu tun haben :: -- %~1: argument description here SETLOCAL REM.--function body here set LocalVar1=dummy set LocalVar2=dummy echo "Called function successfully :)" (ENDLOCAL & REM -- RETURN VALUES IF "%~1" NEQ "" SET %~1=%LocalVar1% IF "%~2" NEQ "" SET %~2=%LocalVar2% ) GOTO:EOF 当我调用mainscript.bat时,我得到以下输出: 什么意思或多或少:找不到名为function1的跳转点 任何想法,还是这不可能? 这是可能的,有一些不同的方法来做到这一点.1)将完整的“库”复制并粘贴到每个文件中 2)通过调用包装器包含一个库 call batchLib.bat :length result "abcdef" 并以batchLib.bat开头 call %* exit /b ... :length ... 易于编程,但非常慢,因为每个库调用都加载库批次,并且可能出现的参数问题. 3)“自载”图书馆BatchLibrary or how to include batch files 它每次创建临时批处理文件,结合自己的代码和库代码. 用户脚本示例 @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% 编辑:另一种方式是… 4)宏库 你可以使用批处理宏,很容易包含和使用它们. call MacroLib.bat set myString=abcdef %$strLen% result,myString echo The length of myString is %result% 但是构建宏非常棘手! MacroLibrary.bat 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=, (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |