bat做成服务后和bat直接执行的结果不一样,求大神指教!!!

G-罗 2013-06-11 02:46:37
用instsrv ServiceName C:\Windows\System32\srvany.exe 将bat注册成服务,在注册表里做了相关配置.

bat主要是做svn的全备份,我把bat做成服务之后启动服务执行之后发现文件夹下面没有dmp文件,求教原因!

set SVN_HOME="C:\VisualSVN Server\bin"
set SVN_ADMIN=%SVN_HOME%\svnadmin.exe
set SVN_LOOK=%SVN_HOME%\svnlook.exe
set SVN_REPOROOT=C:\Repos
set BACKUP_SVN_ROOT=C:\SVN_Backup
set Log_PATH=C:\SVN_Backup
setlocal EnableDelayedExpansion

cd %SVN_REPOROOT%

SET VAR_DATE=%date:~4,2%
dir /B /AD > DIRS
IF EXIST TEMP_DIRECTORY (
DEL /Q TEMP_DIRECTORY
)


FOR /F %%I IN (DIRS) do @if exist "%%I\conf\svnserve.conf" echo %%I >> TEMP_DIRECTORY

FOR /F %%i IN (TEMP_DIRECTORY) DO (
SET REPOS_NAME=%%i
SET IGNORE_FLAG=0
FOR /F %%J IN (%SVN_REPOROOT%\IgnoreList.txt) DO (
IF %%i==%%J SET IGNORE_FLAG=1
)
ECHO ignore flag is !IGNORE_FLAG!
IF !IGNORE_FLAG!==0 CALL :DUMP_REPOS
)

del /q DIRS
del /q TEMP_DIRECTORY

ECHO Successed.
GOTO :EOF

::==== Functions ====
:DUMP_REPOS
SET DUMP_FILE=%REPOS_NAME%_FullBackup_%VAR_DATE%.dmp

%SVN_ADMIN% dump ^"%REPOS_NAME%^" > %DUMP_FILE%

if %ERRORLEVEL% EQU 0 (
ECHO Dump Successful
) else (
ECHO Dump Failed
GOTO :EOF )

%SVN_LOOK% youngest %SVN_REPOROOT%\%REPOS_NAME%> "%Log_PATH%"\%REPOS_NAME%_last_revision.txt

if not exist "%BACKUP_SVN_ROOT%"\%REPOS_NAME% mkdir "%BACKUP_SVN_ROOT%\%REPOS_NAME%"

move %DUMP_FILE% "%BACKUP_SVN_ROOT%\%REPOS_NAME%"
if %ERRORLEVEL% EQU 0 (
ECHO Backup Successful
) else (
ECHO Backup Failed
GOTO :EOF )
...全文
474 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2013-06-13
  • 打赏
  • 举报
回复
关于“备份”,不建议做成服务,推荐做成定时任务。服务一般指基于一定目的需要“持续运行"的程序,你的备份只需要在使用时“运行一下”,与其每次手工启动它,还不如做成定时任务。
X-i-n 2013-06-13
  • 打赏
  • 举报
回复
先确认这个bat有没有运行。最简单的就是把bat内容替换成 ping 127.1 > C:\testlog.txt 如果能找到这个文件,说明bat有问题,如果找不到这个文件,说明压根没有运行,这时候需要考虑是不是登录身份有误(设置好该服务的正确的登录身份,在服务的属性里设置)

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧