@echo off
SETLOCAL
set SCRIPT_DIR=%~dp0
for %%I in ("%SCRIPT_DIR%..") do set DIR=%%~dpfI
set NODE=%DIR%\node\node.exe
WHERE /Q node
IF %ERRORLEVEL% EQU 0 (
for /f "delims=" %%i in ('WHERE node') do set SYS_NODE=%%i
)
If Not Exist "%NODE%" (
IF Exist "%SYS_NODE%" (
set "NODE=%SYS_NODE%"
) else (
Echo unable to find usable node.js executable.
Exit /B 1
)
)
TITLE Kibana Server
"%NODE%" %NODE_OPTIONS% "%DIR%\src\cli" %*
:finally
ENDLOCAL
这是kibana的批处理脚本,
1、SCRIPT_DIR=%~dp0 表示 获取批处理文件的绝对路径(包含盘符),并赋值给SCRIPT_DIR
2、for %%I in (“%SCRIPT_DIR%..”) do set DIR=%%~dpfI 基本是利用for循环,目录返回上一层级,并把该绝对路径赋值给DIR
如测试bat文件:
SET SCRIPT_DIR=%~dp0
for %%I in ("%SCRIPT_DIR%..") do set DIR=%%~dpfI
echo %SCRIPT_DIR%
echo %DIR%
pause
把该文件放在”C:\Users\fsz\Desktop\”路径下,并运行该批处理文件。会分别输出: C:\Users\fsz\Desktop\ 、C:\Users\fsz
3、”%NODE%” %NODE_OPTIONS% “%DIR%\src\cli” %*
这句话的基本功能就是通过nodejs启动 src\cli\index.js 这个文件(nodejs会默认找到文件名为index的js并执行)
%* 是获取命令行参数的意思,在一般情况下用不到,可以在参考文献中自行学习
http://www.2cto.com/kf/201106/94439.html
http://www.2cto.com/os/201205/131134.html
http://blog.csdn.net/albertsh/article/details/52788106