2016-04-25 110 views
0

我有一个run-tests.bat文件,如下所示(提供给我们)。这个bat文件与许多其他文件一起位于一个目录中并被压缩。它是一个独立的testng目录。除了这个文件,在目录中subdirectorys的lib /和驱动器/和lib /的确有TestNG的:导航到bat(或任何)文件时的默认目录

@ECHO [email protected] OFF 

SET javacmd= 
SET javacp=-classpath ".;lib/*" 
SET jvmparams=-Dwebdriver.ie.driver="drivers/IEDriverServer.exe" - Dwebdriver.chrome.driver="drivers/chromedriver.exe" 

IF "%JAVA_HOME%"=="" (
    SET javacmd=java 
) ELSE (
    SET javacmd="%JAVA_HOME%\bin\java" 
) 

for /f tokens^=2-5^ delims^=.-_^" %%j in ('%javacmd% -fullversion 2^>^&1')  do set "jver=%%j%%k%%l%%m" 
IF %jver% LSS 17000 (
    ECHO Java version is not supported. Please install Java 1.7 or greater. 
    GOTO RETURN 
) 

%javacmd% %javacp% %jvmparams% org.testng.TestNG testng.xml 

:RETURN 

IF -%1-==-- (
    PAUSE 
) 

当我在我的机器上运行此,它工作正常。我需要将其复制到共享目录,以便其他人可以运行它。我将它复制到一个共享目录并进行测试,并且运行良好。我用文件浏览器导航,然后双击。

当我让测试人员从他的机器上完成它时,cmd窗口就会出现并消失。我在里面放了一些暂停,看看它失败的地方。 %jver%是17045,所以它超过了这条线。它在%javacmd%命令失败,并表示无法找到(或加载)org.testng.TESTNG。当我从我的机器上运行它而不是从他的机器运行时,它发现它很好。

我唯一的想法是,当我双击将.bat文件,不知何故它的CD我到正确的目录,但保留他在他的目录中,以便SET javacp = -classpath“ LIB/” *设置lib/在他自己的目录中,而不是在解压缩的目录中。我试图找出当你点击一个.bat文件时,无论它是否将光盘放到一个目录中,但找不到它。

那么,我的理论为什么它不正确,还是有其他原因,我没有看到?我验证了我的DOS版本和他是一样的,6.1.7601,我们使用的是Windows 7都和他有Java 7中

回答

0

双击一个.bat.cmd脚本文件会导致该脚本通常运行 无论是在%HOMEDRIVE%%HOMEPATH%或在%SystemRoot%\system32的起始目录中。我想尝试下

@ECHO OFF 
SETLOCAL EnableExtensions 
echo "%~f0" script started in "%CD%" 
pushd "%~dp0" 
echo "%~0" script now run in "%CD%" 
pause 

rem continue here with your code: 
SET javacmd= 
… 

说明: