【发布时间】:2018-12-12 01:55:14
【问题描述】:
我正在为 LabVIEW 项目开发构建管道,并且已经可以从批处理文件或 windows cmd 构建 LabVIEW 项目。这个过程非常简单。我正在从 LabVIEW 引擎中调用一些 LabVIEW 代码来构建项目。该过程在批处理脚本中运行,但是第二次我将批处理文件的内容放入 jenkins 构建步骤中,它失败并显示消息。
'--' is not recognized as an internal or external command,
operable program or batch file.
批处理脚本的内容如下:
@echo off
%LabVIEW17% %pBUILD% -- "<path to my project>.lvproj"
其中 %LabVIEW17% 是 LabVIEW.exe 的路径,%pBUILD% 是构建项目的 LabVIEW 代码的路径。格式基于我在这里找到的一些信息:http://www.ni.com/example/30051/en/
为什么 '--' 会从 Jenkins 而不是 cmd 或批处理文件中失败? -- 输入的目的是什么?
【问题讨论】:
-
这解释得很简单。在批处理文件运行的环境中,没有环境变量
LabVIEW17,也没有环境变量pBUILD,因此第一个非空格分隔的参数字符串是--,这当然不是可执行文件的文件名或要执行的脚本。也许您已经为您的用户帐户定义了两个环境变量,但 Jenkins 正在使用不同的用户帐户运行。 -
为了澄清起见,我在运行 jenkins 的机器上的系统环境变量中设置了这两个变量。
-
在Windows系统设置修改后你重启了整台机器或者至少重启了Jenkins?请看What is the reason for '...' is not recognized as an internal or external command, operable program or batch file?
-
好吧,我现在感觉很笨。但是在重新启动机器和 setx 命令之间,我的问题现在已经解决了。当 Jenkins 作为服务运行时,我必须重新启动机器是很有意义的。这完美地解释了为什么 cmd 和批处理文件都可以工作,因为它们在打开时都会收到环境变量更新,而 jenkins 会一直在后台运行。非常感谢您的帮助。
-
SETX仅对SETX执行后启动的任何新环境生效。任何现有环境都无法访问SETX创建的新变量。
标签: batch-file jenkins cmd command-line-arguments labview