欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

bat 文件中 普通变量 与环境变量的区别 set setx 用法 通义 AG chatgpt 有大用


dos set 命令  参数详解

在DOS(以及后续的Windows命令提示符环境下)中,set 命令有多个参数或选项,以下是主要参数详解:

  1. 基本用法

  • set variable=value 设置一个环境变量名为“variable”的变量,并赋予其值“value”。

  • 显示所有环境变量

    • set 不带任何参数时,将显示当前会话中的所有环境变量及其对应的值。

  • 查看单个环境变量

    • set variable 显示指定环境变量“variable”的当前值。

  • 删除变量

    • set variable= 删除名为“variable”的环境变量,或者清空其值。

  • 用户交互式输入

    • set /P variable=[promptString] 该选项允许从键盘获取用户输入并将其赋给变量。括号内的内容是提示信息,例如:set /P USERINPUT=请输入用户名:

  • 数值计算

    • set /A expression 进行数学运算并将结果赋值给变量。表达式可以包括数字、算术运算符和一些特殊符号,例如:set /A result = 5 + 3 * 2

  • 启用或禁用命令回显

    • 在批处理文件中,有时为了调试需要,可以使用 echo on 或 echo off 来控制命令是否回显。 虽然不是 set 命令的一部分,但与之相关的功能是 set echo [on|off],在较旧版本的DOS中可能有效,但在现代Windows cmd环境中通常使用 echo 命令直接控制。

  • 其他说明

    • 对于变量名,在批处理文件中不能以数字开头,而在命令行界面则没有这个限制。

    • 变量引用时需使用百分号 % 符号,如 %variable%

    请注意,实际使用的DOS版本和Windows操作系统版本不同,可能会对set命令的具体行为和可用选项有所影响。以上解释基于较新版本的Windows CMD环境。




    bat 文件中  普通变量 与环境变量的区别

    在Windows批处理(.bat)文件中,变量有两种主要类型:普通变量和环境变量。

    1. 普通变量

    • 普通变量仅在当前批处理文件的上下文中有效。

    • 定义方式:使用 set 命令来设置一个局部变量,例如:

      code
      set myVar=Hello echo %myVar%
    • 当批处理脚本执行完毕或调用另一个新的命令提示符窗口时,这些变量的值不会被保留,新环境中将无法访问这些变量。

  • 环境变量

    • 环境变量是系统级别的变量,在整个系统的进程之间共享,不仅在当前批处理文件内可用,而且在后续启动的所有程序中也都可以读取到。

    • 设置环境变量同样可以使用 set 命令,但为了使其成为永久性的环境变量,需要使用 setx 命令:

      batch
      setx myEnvVar Value /m

      或者在批处理中临时添加并在当前会话中生效:

      batch
      setx myEnvVar Value set myEnvVar=Value
    • 如果你想让环境变量只在当前命令提示符窗口及其子进程中生效,可以直接使用 set

      batch
      set myEnvVar=Value
    • 部分环境变量在操作系统启动时就已经存在,比如 %PATH%%JAVA_HOME%%USERPROFILE% 等,用户也可以自定义环境变量以供其他应用程序或脚本使用。

    总结来说,普通变量的作用域局限在创建它的批处理脚本内部,而环境变量的作用域更为广泛,会影响所有基于当前环境创建的新进程。


    bat 文件中  普通变量 与环境变量的区别

    在BAT文件中,普通变量和环境变量有以下区别:

    1. 定义方式:普通变量通过使用SET命令在BAT文件中定义,而环境变量是在操作系统环境中定义的。

    2. 作用范围:普通变量的作用范围仅限于当前的BAT文件,而环境变量的作用范围在整个操作系统中都可见。

    3. 使用方式:普通变量可以通过%变量名%的形式在BAT文件中引用,而环境变量直接根据变量名来使用,无需使用%符号。

    4. 可改变性:普通变量的值可以在BAT文件中随时修改,而环境变量的值通常在系统设置中进行更改,并且在整个操作系统中保持不变。

    5. 变量存储位置:普通变量存储在BAT文件执行过程中的内存中,而环境变量存储在操作系统的注册表或配置文件中。

    总之,普通变量适用于在BAT文件中需要临时存储数据的场景,而环境变量适用于需要在整个操作系统中共享、使用的数据。


    setx 用法 示例

    setx 是一个在 Windows 系统中用于设置环境变量的命令行工具,它可以永久性地修改用户的系统环境变量。以下是一些 setx 命令的基本用法和示例:

    基本格式:

    cmd
    setx variable value [/options]
    • variable:要设置或修改的环境变量名。

    • value:该环境变量所对应的值。

    选项参数:

    • /m:表示将变量写入系统环境变量(默认情况下,如果没有指定 /m,则会写入用户环境变量)。

    • /s:计算机名,如果需要在远程计算机上设置环境变量时使用。

    • /u 和 /p:分别提供远程计算机的用户名和密码,在进行远程操作时需要用到。

    • /k:后面可以跟注册表路径,这样设置的环境变量将会与注册表键值关联。

    示例:

    1. 设置一个新的用户环境变量 MY_VAR,并赋值为 "Hello World"

      cmd
      setx MY_VAR "Hello World"
    2. 设置一个系统级别的环境变量:

      cmd
      setx MY_SYSTEM_VAR "System Wide Value" /m
    3. 将当前目录路径设置为环境变量:

      cmd
      setx CURRENT_DIR "%CD%"
    4. 连接环境变量到注册表键值(此功能可能根据Windows版本有所不同):

      cmd
      setx BUILD /k HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber

    注意,setx 设置的环境变量仅对新打开的命令提示符窗口或应用程序生效,不会影响已经运行的程序或当前命令提示符窗口。此外,setx 的输出信息会被重定向到 %TEMP% 目录下的一个临时文件中,并不会直接显示在命令行界面中。





    SET命令和SETX命令都用于在BAT文件中设置变量,但二者有以下区别:

    1. 语法:SET命令的语法为:SET 变量名=值,而SETX命令的语法为:SETX 变量名 值

    2. 作用范围:SET命令设置的变量仅在当前的CMD会话中有效,而SETX命令设置的变量在系统范围内都有效,即对所有的CMD会话和新打开的CMD窗口都可见。

    3. 持久性:SET命令设置的变量在CMD会话结束时会被销毁,而SETX命令设置的变量会被持久保存,即使在系统重启后仍然有效。

    4. 注册表:SET命令将变量存储在内存中,而SETX命令将变量保存在注册表中的某个特定键值下。

    示例:

    使用SET命令设置变量:

    @echo off
    set var=Hello World
    echo %var%
    

    输出:

    Hello World
    

    使用SETX命令设置变量:

    @echo off
    setx var "Hello World"
    echo %var%
    

    输出:

    %var%
    

    注意:在使用SETX命令设置变量后,需要关闭当前CMD窗口重新打开一个新的CMD窗口,才能看到新设置的变量值。


    set 命令 用法 示例

    在Windows批处理(.bat)脚本和命令提示符环境下,set 命令主要用于设置、显示或删除环境变量以及普通变量。以下是 set 命令的一些基本用法及示例:

    1. 设置环境变量

      cmd
      set VARIABLE_NAME=VALUE

      示例:

      cmd
      set PATH=%PATH%;C:\MyPrograms

      这将把 C:\MyPrograms 添加到当前会话的系统路径环境变量 %PATH% 中。

    2. 设置普通变量(仅限当前批处理脚本):

      cmd
      set myVar=Hello, World! echo %myVar%

      输出:Hello, World!

    3. 查看所有环境变量

      cmd
      set

      运行此命令会列出当前会话中的所有环境变量及其值。

    4. 查看特定环境变量

      cmd
      set VARIABLE_NAME

      示例:

      cmd
      set PATH
    5. 删除环境变量或普通变量

      cmd
      set VARIABLE_NAME=

      示例:

      cmd
      set myVar=
    6. 启用或禁用命令行开关

      cmd
      set "option+" set "option-"

      其中 option 是与 shell 行为相关的选项,例如 echoextensions 等。但在标准 Windows CMD 中并不常用这类功能来改变 shell 行为。

    7. 延迟环境变量扩展

      cmd
      setlocal enabledelayedexpansion set VAR=before set VAR=!VAR!after echo %VAR%

      在开启了延迟扩展的情况下,变量可以在一行内部自我更新其值。

    请注意,对于环境变量,如果需要使其永久生效,你需要通过系统属性或者注册表编辑器进行更改,或者使用 setx 命令(如前所述)。而 set 命令通常只影响当前进程及其子进程的环境。


    dos 中 set 命令 作用


    在DOS命令行环境(也就是Windows的命令提示符CMD)中,set命令主要用于管理和操作环境变量。环境变量是操作系统用来存储各种配置信息和临时数据的一种机制,它们对系统进程以及运行在该环境下的程序具有全局可见性。

    以下是set命令的基本作用:

    1. 显示环境变量

    • set:不带任何参数时,会显示当前会话中的所有环境变量及其值。

    • set variable:显示指定环境变量variable的值。

  • 设置环境变量

    • set variable=value:创建或修改名为variable的环境变量,并将其值设为value。例如:

      cmd
      set PATH=C:\MyPrograms
    • 追加到现有环境变量:

      cmd
      set PATH=%PATH%;C:\NewPath

      上述命令将新的路径添加到已存在的PATH环境变量后面。

  • 清除环境变量

    • set variable= 或 set variable=[:]:删除名为variable的环境变量,或者可以清空其值。

  • 批处理文件中的变量赋值: 在批处理脚本(.bat文件)中,set命令还可以用于定义和操作局部变量,这些变量只在批处理文件执行期间有效。

  • 交互式输入/p 表示交互式输入

    • set /P variable=[promptString]:允许从用户处获取输入并将其赋给变量。例如:

      cmd
      set /P INPUT=请输入一个值:

    需要注意的是,在命令提示符窗口中直接使用set命令设置的环境变量仅对该窗口有效,一旦关闭窗口,所做的更改就会丢失。若要永久更改系统的环境变量,需要通过控制面板、系统属性或其他系统级配置工具进行设置。



    set /p 的用法 示例

    SET /P命令用于在BAT文件中从用户输入中接收值,并将其赋给一个变量。以下是SET /P命令的示例用法:

    bat

    @echo off set /p name="请输入您的姓名:" echo 您好,%name%!

    在上述示例中,SET /P命令会提示用户输入姓名,并将输入的值赋给变量name。然后,使用echo命令将包含用户输入的变量值输出到屏幕上。

    以下是一些SET /P的更多示例用法:

    1. 接收数字输入:

    bat

    @echo off set /p num="请输入一个数字:" echo 您输入的数字是:%num%
    1. 接收多个值输入,使用空格或逗号作为分隔符:

    bat

    @echo off set /p input="请输入多个值(用空格或逗号分隔):" echo 您输入的值是:%input%
    1. 设置提示文本:

    bat

    @echo off set /p name="请输入您的姓名: " echo 您好,%name%!
    1. 使用默认值:

    bat

    @echo off set /p name="请输入您的姓名(回车使用默认值): " || set "name=Guest" echo 您好,%name%!

    如果用户直接按下回车键而没有输入值,那么name变量将被设置为默认值"Guest"。

    请注意,使用SET /P命令接收用户输入时,如果用户不输入任何值而直接按下回车键,则变量将保持不变。在某些情况下,可能需要对用户输入进行验证和异常处理。


    set /p 的用法 示例

    在 Windows 命令提示符和批处理 (.bat) 文件中,set /p 命令用于从用户那里获取输入,并将其赋值给一个变量。基本格式如下:

    cmd
    set /p variable=[promptString]
    • variable:您要创建或修改的变量名。

    • [promptString]:(可选)显示给用户的提示信息。

    示例:

    1. 向用户询问并保存姓名到变量 name

      cmd
      set /p name="请输入您的姓名: " echo 您的名字是:%name%
    2. 如果需要为空值提供默认值,可以这样操作:

      cmd
      set /p password="请输入密码 (留空则使用默认密码 'defaultPass') : " || set password=defaultPass echo 您输入的密码是: %password%

      在这个例子中,如果用户没有输入任何内容直接按回车键,那么 password 变量将被设置为 'defaultPass'

    注意:

    • 用户的输入不会显示在屏幕上(这对于密码输入等敏感信息非常有用)。

    • 用户可以通过按回车键不输入任何内容,但如果不希望接受空值,需要在脚本中进行额外判断和处理。

    • set /p 不能识别多行输入,只会获取用户按下回车键前的那一行文本。


    普通分类: