Windows 启动时批处理脚本未完成
我有一个批处理脚本,可以从Windows启动时运行的SVN(使用本地组策略编辑器配置)中下拉最新版本的文件 以下是脚本的代码:Windows 启动时批处理脚本未完成,windows,batch-file,startup,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,
@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>
这是我所期望的,但是当脚本在启动时运行时,最后一行被省略了。它使用以下内容填充mcl_update.log:
02/14/2017 16:16:07
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':
第二行是来自svn
的输出的一部分,因此命令似乎启动了,但从未结束。我不明白为什么会发生这种事。有人有什么想法吗
谢谢
-肖恩
一个新发现的信息:启动后,如果我试图删除生成的日志文件,Windows会抛出一个错误,指出“该操作无法完成,因为该文件已在cmd.exe中打开”
这可能是一个域问题吗?与我公司网络的连接尚未启动,因此,
svn
命令刚刚挂起?我怀疑路径
不是您在启动过程中所期望的。也许您应该明确指定svn
的路径,因为您显然记录的唯一报告是一个普通的echo
,而不是来自svn
的任何响应,因此在遵循@Magoo的建议将stderr
导出到文件后,问题就变得清楚了。事实证明,这与我的服务器的用户身份验证有关。由于脚本在启动时(即在我登录之前)运行,svn
命令无法工作,因为无法进行用户身份验证
我将组策略更改为在登录时启动脚本,而不是启动,现在一切正常。
更新“C:\ALTIUM\u WORK\00001\u MCHP-CDB\parts\Library”:
是svn
输出的第一部分。它似乎永远无法完成命令。作为一个健全性检查,我首先向svn
的路径添加了一张cd
,但是输出是一样的。除非我在调用svn
时需要使用显式路径。如果您怀疑这是一个时间问题,可能会在第一个svn
之前插入timeout/t90>nul
。否则,我会在第二个(有问题的)svn
之后添加一个pause
,并删除重定向。我怀疑svn
正在等待输入,并可能在stderr
上报告,因此在重定向时,stdout
上不会出现提示。有趣的是,第一个svn
似乎完成了2>&1
应使用当前重定向器将stderr和stdout重定向到文件(但这对svn
可能正在等待的任何输入都没有帮助)
02/14/2017 16:16:07
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':