如果我在Windows上的批处理脚本中覆盖系统范围的变量会发生什么?

时间:2017-06-08 20:13:14

标签: windows batch-file

我是批处理脚本(对于Windows)的新手,所以我正在阅读它的教程。教程陈述

  

警告:SET将始终覆盖(clobber)任何现有的   变量。 。在编写脚本时验证您不会覆盖系统范围的变量是个好主意...例如,命名变量可能很诱人   “temp”,但是,这将改变广泛使用的“%TEMP%”的含义   环境变量。

然而,本教程并没有考虑到这样做的后果。 如果我编写一个只覆盖其中一个系统范围变量的批处理文件会发生什么情况,它只会更改脚本范围内的变量吗?如果我直接在命令行输入它怎么样?

通常我会运行它看看会发生什么,但我不想意外覆盖重要的东西。

1 个答案:

答案 0 :(得分:2)

set仅覆盖该cmd.exe实例中的变量(以及从此实例启动的子进程),它不会影响其他控制台窗口(新窗口或现有窗口),并且当您关闭时所有这些变量都会丢失控制台窗口。

您还可以使用set对您的批处理文件进行setlocal更改:

@echo off
set global=Hello
setlocal
set private=world

可以使用setx资源工具包实用程序进行持久更改。