2016-04-25 109 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= 
… 

說明: