错误:语法无效。默认选项不允许超过“2”次。键入“SETX /?”以获取用法

5

我正在使用Windows 10。在CMD中,我尝试在我的电子项目中执行以下命令:

setx GH_TOKEN "ghp_B3kYZy7OibM1Rka4Y3jLSiBUlvtSS717FhvE" npm run publish

我遇到了这个错误:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.

以下代码是 Package.json 文件的一部分内容:
"scripts": {
    "publish": "electron-builder build -w -p onTagOrDraft"
  }

在我观看的教程中,在Mac操作系统下输入以下命令,它可以正常工作: 输入图像描述
2个回答

4

使用

setx GH_TOKEN "ghp_B3kYZy7OibM1Rka4Y3jLSiBUlvtSS717FhvE" && npm run publish

由于有两个命令,所以&&是必需的。如果没有&&npm run publish 将会被传递为 SETX 的参数。

在第1行字符58处:
  • setx GH_TOKEN "ghp_B3kYZy7OibM1Rka4Y3jLSiBUlvtSS717FhvE" && npm run ...
  • ~~
该版本中标记'&&'不是有效的语句分隔符。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : InvalidEndOfLine
- Mehrshad Farzaneh
我刚按照你的问题在CMD中测试了它,它可以正常工作。你是在什么环境下运行它?PowerShell? - Daniel Hilgarth
2
非常感谢,CMD中的这个命令正常工作。我在Power Shell中测试了您的命令,并注意到我必须使用以下语法: (命令1)-and(命令2) - Mehrshad Farzaneh

3

如果您设置的环境变量中包含一个或多个空格,也会出现此错误。

在这种情况下,您可以通过将值用双引号括起来来避免问题。与 SET 不同,SETX 会将引号从存储的值中排除。

下面的示例显示了 SETSETX 在处理空格和引号时的差异。

对于带有空格的 SET,不需要使用引号(如果包含,则成为值的一部分):

Set a value                              View the value                              
-----------------------------            -----------------------------
C:\TEMP>set MYVAR=some value             C:\TEMP>set MY
                                         MYVAR=some value

C:\TEMP>set MYVAR="some value"           C:\TEMP>set MY
                                         MYVAR="some value"

对于带有空格的 SETX,需要使用引号(并且引号不会成为值的一部分):

Set a value                              View the value in a new window                      
-----------------------------            -----------------------------
C:\TEMP>SETX MYVAR some value
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.

C:\TEMP>SETX MYVAR "some value"          C:\TEMP>set MY
SUCCESS: Specified value was saved.      MYVAR=some value

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接