我有一个run-tests.bat文件,如下所示(提供给我们)。这个bat文件与许多其他文件一起放在一个目录中并被压缩。它是一个独立的testng目录。除了这个文件,在目录中还有子目录lib /和drivers /和lib /确实有testng:
@ECHO OFF@ECHO 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 :(得分: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=
…
说明:
SETLOCAL EnableExtensions
:虽然默认情况下启用了命令扩展,但可以禁用或关闭此命令,请参阅CMD shell或cmd /?
。正确的确保...... "%~f0"
,"%~dp0"
参数扩展:请参阅Command Line Arguments或call /?
。pushd "%~dp0"
:change the current directory/folder包括磁盘驱动器,另请参阅pushd /?
。