Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理循环的第二个实例未运行_Batch File_Selenium_For Loop_Subroutine - Fatal编程技术网

Batch file 批处理循环的第二个实例未运行

Batch file 批处理循环的第二个实例未运行,batch-file,selenium,for-loop,subroutine,Batch File,Selenium,For Loop,Subroutine,我正在尝试在Windows 7计算机上创建DOS批处理脚本。我想执行文件123456.bat,其中包含以下命令和参数: call **startSelenium.bat** 55 someSuiteName suite-someSuite.html development 1 1 10 10 该脚本调用下面的startSelenium.bat脚本: Setlocal EnableDelayedExpansion SET TimeStamp= FOR /f "tokens=1-4 delim

我正在尝试在Windows 7计算机上创建DOS批处理脚本。我想执行文件123456.bat,其中包含以下命令和参数:

call **startSelenium.bat** 55 someSuiteName suite-someSuite.html development 1 1 10 10
该脚本调用下面的startSelenium.bat脚本:

Setlocal EnableDelayedExpansion

SET TimeStamp= 
FOR /f "tokens=1-4 delims=/ " %%i in ("%date%") do set datestr=%%l%%j%%k
FOR /f "tokens=1-4 delims=.: " %%i in ("%time%") do set timestr=%%i%%j%%k%%l
SET TimeStamp=%datestr%%timestr%

set a=2
set b=0
set /a c=%a%+%b%

FOR /l %%t IN (1, 1, %c%) do (
  call :SEARCHPORT %%t
  echo %startPort%
  Start java -jar C:\Selenium\2\selenium-server-standalone-2.47.1.jar -port %startPort% -singleWindow -userExtensions C:\selenium\2\user-extensions.js -firefoxProfileTemplate "c:\selenium\2\ffprofiles\2rc" -htmlSuite "*chrome" "https://www.google.com" "Z:\selenium\2\environment\%4\suites\%3" "u:\results\%4\result-%1-%computername%-1234-%TimeStamp%.htm"  
  timeout /t 10
)
GOTO :EOF

:SEARCHPORT 

netstat -o -n -a | find "LISTENING" | find ":%startPort% " > NUL
if "%ERRORLEVEL%" equ "0" (
  set /a startPort +=1
  GOTO :SEARCHPORT
) ELSE (
  set freePort=%startPort%
  echo %startPort%

GOTO :EOF
当我运行脚本时,java应用程序的第一个实例使用SEARCHPORT子例程找到的空闲Windows端口运行;然而,第二个实例突然出现并立即退出。我怀疑代码在第一次通过FOR循环时使用了相同的变量,而不是获取新的未使用端口号

我做错了什么?我从其他来源复制了这段代码的各个部分。我显然是一个努比人,所以简单的英语会很有帮助。:)

您遇到了一个问题


您已启用延迟扩展,但未使用它。您必须将
%startPort%
替换为
!startPort在您的
for/l
循环中。

请编辑代码以使其可读。根据你的描述,这听起来像个问题。你真的还在使用MS-DOS吗?我不这么认为;请检查标签并进行相应调整…进一步说明Stephan所说的内容-您以引用文本的形式输入代码,使其完全无法阅读。我们无法知道换行符在哪里,而换行符在批处理脚本中非常重要。编辑您的问题并删除引号(黄色部分),然后重新输入代码,但使用“代码”按钮(大括号)。如果操作正确,代码将为灰色。@dbenham。。。谢谢你的耐心和具体,因为我是新来的。非常感谢。我还尝试将searchPort子例程作为一个单独的批处理文件拉出,并使用:call searchPort%startPort%作为FOR循环开始后的第一行调用它。当然,不知道我在做什么,它没有起作用。