启动时的批处理脚本未完成

时间:2017-02-14 23:38:18

标签: windows batch-file startup

我有一个批处理脚本,用于从Windows启动时运行的SVN下拉最新修订文件(使用本地组策略编辑器配置)。

以下是脚本的代码:

@echo off

if "%1"=="" (
    set LIBPATH=C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library
) else (
    set LIBPATH=%1
)

svn cleanup %LIBPATH%

set DATETIME=%DATE:~4,2%/%DATE:~7,2%/%DATE:~10,4% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%

echo %DATETIME%>mcl_update.log
svn up %LIBPATH%>>mcl_update.log

if ERRORLEVEL 1 goto ERRHANDLER
Exit

:ERRHANDLER
<Insert error message here>

当我通过双击.bat运行此脚本时,我在mcl_update.log中获得以下输出:

02/14/2017 16:13:50
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':
At revision 5800.

这就是我的期望,但是当脚本在启动时运行时,最后一行被省略了。它使用以下命令填充mcl_update.log:

02/14/2017 16:16:07
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':

第二行是svn输出的一部分,所以看起来命令开始,但是永远不会结束。我为何会发生这种情况感到茫然。有没有人有任何想法?

谢谢!

-Sean

新发现的信息:启动后,如果我尝试删除生成的日志文件,Windows会抛出错误,指出&#34;由于文件已打开,操作无法完成在cmd.exe&#34;。

这可能是域名问题吗?与我公司网络的连接尚未启动,因此svn命令只是挂起?

2 个答案:

答案 0 :(得分:0)

我怀疑path不是您在启动期间所期望的。也许您应该明确指定svn的路径,因为您显然记录的唯一报告是echo,而不是来自svn的任何响应。

答案 1 :(得分:0)

因此,在关注@Magoo建议将stderr传递给文件之后,问题变得清晰了。事实证明它与我的服务器的用户身份验证有关。由于脚本在启动时运行(即在我登录之前),svn命令不起作用,因为用户身份验证是不可能的。

我更改了组策略,以便在登录时启动脚本,而不是启动,现在一切正常。