gpt4 book ai didi

batch-file - 如何用空格设置环境变量?

转载 作者:行者123 更新时间:2023-12-03 16:55:11 25 4
gpt4 key购买 nike

我需要使用批处理文件将值设置为环境变量。我为此编写了脚本:

@echo off
set value="Hello world"
setx -M srijani "%srijani%;%value%"

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

我在Google上搜索后发现,在使用空格时,我们需要将其写在双引号中。
set value="Hello world"

但是,那也行不通。

注意:我在Windows 7上。

最佳答案

命令 setx 所输出的错误是由于在将字符串分配给变量value时使用引号引起的。

命令为,设置为,参数为variable=value。对于大多数命令和应用程序,如果包含一个或多个空格或此列表中的任何其他字符,则可能且经常需要用双引号将参数引起来:&()[]{}^=;!'+,`~。通过在命令提示符窗口cmd /?help cmd中运行,这些字符将显示在最后的帮助页面输出中。

但是这里是错误的:

set value="Hello world"

对于等号后的第一个双引号,命令 set 的整个参数 variable=value都不用双引号引起来。

这导致将双引号解释为字符串的一部分,以分配给名称为 value的变量。从等号到行尾的所有内容(包括双引号以及可能存在的尾随空格和水平制表符)在此处都分配给了 value变量,而不是预期的字符串 Hello world

关于扩大生产线
setx -M srijani "%srijani%;%value%"

结果是:
setx -M srijani "Value of variable srijani;"Hello world""

并且命令 setx 将错误的引用参数解释为语法错误。

正确的将使用:
set "value=Hello world"

现在,命令 set 的整个参数都用双引号引起来。因此,在解析该行时将忽略以下内容:
  • 命令设置和第一个双引号
  • 之间的所有空格/制表符
  • 第一个双引号
  • 最后一个双引号
  • 以及最后一个双引号之后的所有可能存在的空格/制表符。

  • 因此,仅将 Hello world分配给名称为 value的变量。

    有关将字符串正确分配给环境变量的更多详细信息,请阅读 Why is no string output with 'echo %var%' after using 'set var = text' on command line?上的答案。它还包含一个简单的演示批处理代码。

    一些更多的信息:

    如何解释在中间某处包含1个或多个引号的参数字符串取决于命令和相应的应用程序。解释在参数字符串中包含1个或多个 "的参数的行为可能会有所不同,具体取决于所使用的编译器,如 batch file: list rar file in specific folder and write result into text file的答案中所述,当然还有命令/应用程序的源代码。

    对于大多数命令和应用程序,正确的语法是:
    command "parameter in quotes"
    "Path to application\app.exe" "parameter in quotes"

    但是有些应用程序需要在参数字符串中间加引号。 Windows资源管理器就是此类应用程序的一个示例。

    要从批处理文件中打开资源管理器窗口,并在窗口中显示当前目录,需要以下语法。
    explorer.exe /e,"%CD%"

    不工作的是:
    explorer.exe "/e,%CD%"
    explorer.exe /e "%CD%"

    因此, explorer.exe要求在要打开的目录之后在参数字符串中间用引号引起来的 /e,之后指定它,或者将 "/e,%CD%""/e %CD%"分别解释为要在资源管理器窗口中显示的目录名称。

    另请参见 SS64 - Windows Explorer command-line options

    关于batch-file - 如何用空格设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34353504/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com