标题: 请问如何实现一个bat调用另一个bat中函数,谢谢。
[打印本页]
作者: leson
时间: 2008-9-15 13:56
标题: 请问如何实现一个bat调用另一个bat中函数,谢谢。
一直很疑惑,
难道在批处理中使用函数就只能够在本bat中使用吗?
不可以像Shell Script里面的.或source导入一样重用,
或者至少可以call lib.bat func args
这样使用吧?
请高手指点,谢谢。
作者: HAT
时间: 2008-9-15 14:21
一个.bat
@echo off
call 另一个.bat hello
另一个.bat
@echo off
echo %1
pause
作者: leson
时间: 2008-9-15 14:39
是希望调用另一个bat中的函数,
也就是想实现函数库bat,将一些常用函数定义放里面。
然后以后需要在独立应用中用到函数时,直接导入定义或直接调用即可。
不知道有没有这种实现?
谢谢。
作者: dikex
时间: 2008-9-15 15:08
1.bat
@echo off
call 2.bat call :a
pause
2.bat
@echo off
%*
goto :eof
:a
echo aaaaaaaaa
goto :eof
:b
echo bbbbbbbbb
goto :eof
作者: leson
时间: 2008-9-15 15:12
当前也只能使用下面这种walk-around方案了。
如果大家还有更好的方法,请不吝赐教,谢谢。
func_lib.bat:
@echo off
:: main entry
set "func=%~1"
shift
goto %func%
goto:EOF
:: functions definitions show below
:bannerPingPong varref -- moves text in varref one step left or right and updates title
:: -- varref [in,out] - variable name with banner text, format: "Banner Text------"
SETLOCAL ENABLEDELAYEDEXPANSION
set s=!%~1: =-!
if "!s:~-1!" NEQ "-" if "!s:~-1!" NEQ "+" set s=!s!--------
set d=!s:~-1!
if "!s:~0,1!" NEQ "-" set d=+
if "!s:~-2,1!" NEQ "-" set d=-
if "!d!"=="+" (set s=-!s:~0,-2!+) ELSE (set s=!s:~1,-1!--)
TITLE !s!
(ENDLOCAL & REM RETURN VALUES
IF "%~1" NEQ "" SET %~1=%s%
)
goto:EOF
app.bat:
@echo off
set "text=hi -"
for /l %%C in (1,1,15) do (
call func_lib.bat :bannerPingPong text
call echo.'%%text%%'
)
app.bat执行结果:
D:\root\rove\batch>.\app.bat
'-hi---+'
'--hi--+'
'---hi-+'
'----hi+'
'---hi--'
'--hi---'
'-hi----'
'hi-----'
'-hi---+'
'--hi--+'
'---hi-+'
'----hi+'
'---hi--'
'--hi---'
'-hi----'
作者: leson
时间: 2008-9-15 15:15
4楼的方法真是太厉害了,
完全是思路上的层次啊,
非常感谢。
应该是解决了,困扰我好久的问题了,谢谢。