将 Subversion 安装为服务很麻烦

于是就写了个Bat处理文件,简化操作。

不想,想实现一个功能的时候,卡壳了。

想将一个程序的输出设置到某个变量中,结果弄了半天也无法实现

退而求其次之,将文件内容读入变量中,不想也是很复杂,也查到了一些处理方法。

不过,这些处理方法太变态了,我吐血三升才看明白大部分代码。

如何将文件的内容读入变量,看这里

下面是如何安装 Subversion 为服务的批处理,可以直接拷贝到 Subversion 的主目录中运行,这样你也可以快速安装了。

另外:SETX.EXE 可能只在Win2000/Win2003才有。


SVN_INSTALL.BAT

@ECHO OFF
::======================================================================
::作者     : Zealic
::版本     : 1.05
::功能     : 通过简便快捷的方式安装 Subversion.
::最后更新 : 2007-12-28
::======================================================================
::初始化环境
::======================================================================
SET svn_dir=%cd%
ECHO *** 安装 Subversion 服务 ***

::======================================================================
::======================================================================
::创建服务
::======================================================================
ECHO +++ 创建资源库服务 +++
ECHO 创建系统服务,这需要输入一些信息...

:INPUT_SVC_NAME
SET /P svc_name=请输入服务名     :
::服务名不能为空值
if "%svc_name%" == "" (
  ECHO 服务名不能为空,请重新输入。
  GOTO INPUT_SVC_NAME
)
::查询服务是否存在,通过查找输出是否存在错误,"1060:"是发生错误是时输出的错误代码。
SC QUERY "%svc_name%" | find "1060:" >> NUL
IF %errorlevel% == 1 (
  ECHO 服务 "%svc_name%" 已经存在!请重新输入服务名。
  GOTO INPUT_SVC_NAME
)
ECHO.

::输入资源库信息
:INPUT_REPOS
SET /P    repos=请输入资源库路径 :
ECHO.

::创建服务
ECHO 您使用以下信息创建 Subversion 服务 :
ECHO 服务名称   : "%svc_name%"
ECHO 资源库路径 : "%repos%"
ECHO 正在创建服务...
SC create %svc_name% binPath= "\"%svn_dir%\bin\svnserve.exe\" --service -r \"%repos%\"" depend= Tcpip start= auto| find "1060:" >> NUL
ECHO.
IF %errorlevel% == 0 GOTO SC_ERROR
ECHO --- 创建服务成功! ---
ECHO.
ECHO.

::======================================================================
::生成操作批处理文件
::======================================================================
ECHO +++ 生成服务操作批处理 +++
ECHO 服务操作批处理文件可以帮助您快速操作服务。
SET bat_delete=DELETE_%svc_name%.BAT
SET bat_start=START_%svc_name%.BAT
SET bat_stop=STOP_%svc_name%.BAT
ECHO 生成删除服务批处理 "%bat_delete%" ...
::bat_delete
ECHO @ECHO OFF> %bat_delete%
ECHO NET STOP %svc_name%>> %bat_delete%
ECHO SC delete %svc_name%>> %bat_delete%
ECHO DEL %bat_start%>> %bat_delete%
ECHO DEL %bat_stop%>> %bat_delete%
ECHO DEL %bat_delete%>> %bat_delete%
ECHO PAUSE>> %bat_delete%
::bat_start
ECHO 生成运行服务批处理 "%bat_start%" ...
ECHO @ECHO OFF> %bat_start%
ECHO NET START %svc_name%>> %bat_start%
ECHO PAUSE>> %bat_start%
::bat_stop
ECHO 生成停止服务批处理 "%bat_stop%" ...
ECHO @ECHO OFF> %bat_stop%
ECHO NET STOP %svc_name%>> %bat_stop%
ECHO PAUSE>> %bat_stop%
ECHO.
ECHO --- 生成服务操作批处理成功! ---
ECHO.
ECHO.

::======================================================================
::Finish
::======================================================================
ECHO ### 所有操作成功! ###
GOTO END

::======================================================================
::错误段
::======================================================================
:ENV_ERROR
ECHO --- 设置环境变量失败! ---
GOTO END

:SC_ERROR
ECHO --- 创建服务失败! ---
GOTO END

:SC_INV_PORT
ECHO 无效的端口号,请重新输入。
GOTO INPUT_SVC_PORT

:END
PAUSE



事实证明
想写好批处理也不是很简单的。
posted on 2007-03-10 00:09  Zealic  阅读(4381)  评论(1编辑  收藏  举报