我有一个批处理脚本,用于从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
命令只是挂起?
答案 0 :(得分:0)
我怀疑path
不是您在启动期间所期望的。也许您应该明确指定svn
的路径,因为您显然记录的唯一报告是echo
,而不是来自svn
的任何响应。
答案 1 :(得分:0)
因此,在关注@Magoo建议将stderr
传递给文件之后,问题变得清晰了。事实证明它与我的服务器的用户身份验证有关。由于脚本在启动时运行(即在我登录之前),svn
命令不起作用,因为用户身份验证是不可能的。
我更改了组策略,以便在登录时启动脚本,而不是启动,现在一切正常。