Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件的永久变量_Batch File_Cmd - Fatal编程技术网

Batch file 批处理文件的永久变量

Batch file 批处理文件的永久变量,batch-file,cmd,Batch File,Cmd,我的程序是一个特定程序的基于GUI的安装和运行工具,当我说GUI时,我指的是批处理文件。当它安装一个程序时,它需要始终知道它安装在哪里,目前,它只是将它记录到一个变量中,但这只有在他们不关闭程序并在以后返回时才起作用,所以我想知道一种存储永久变量的方法。 我在想可能是这样的: set instloc='C:\Users\JoeBloggs\Documents\Environment\My Programs\This program.exe' echo %instloc% > instloc

我的程序是一个特定程序的基于GUI的安装和运行工具,当我说GUI时,我指的是批处理文件。当它安装一个程序时,它需要始终知道它安装在哪里,目前,它只是将它记录到一个变量中,但这只有在他们不关闭程序并在以后返回时才起作用,所以我想知道一种存储永久变量的方法。 我在想可能是这样的:

set instloc='C:\Users\JoeBloggs\Documents\Environment\My Programs\This program.exe'
echo %instloc% > instloc.txt
attrib +h instloc.txt 
但是我想知道是否有专门的命令用于它

Set修改当前shell的环境值,并且更改是临时的,但可以立即使用。更改不会影响正在运行的其他shell,并且一旦关闭shell,新值将丢失

setx永久修改该值,该值将影响将来所有的shell,但不会修改已经运行的shell的环境。在更改可用之前,必须退出shell并重新打开它,但在再次更改之前,该值将保持修改状态

在您的情况下,使用setx代替set:

setx instloc“C:\Users\JoeBloggs\Documents\Environment\My Programs\This program.exe”


setx instloc“C:\Users\JoeBloggs\Documents\Environment\My Programs\This program.exe”
注册表就是为此而发明的。关于如何在批处理中读取和写入注册表项的文章很多。有一个矛盾修饰法,将GUI(图形用户界面)与批处理文件等同起来。使用SETX-SETX永久修改该值,这会影响所有未来的shell,但不会修改已在运行的shell的环境。在更改可用之前,您必须退出shell并重新打开它,但在您再次更改之前,该值将保持修改状态。因此,在我们的世界中,GUI意味着控制台。您是否真的费心测试您的答案
setx
不使用
=
。应该是“setx instloc”C:\Users\JoeBloggs\Documents\Environment\My Programs\This program.exe“@DavidPostill:这是个打字错误。正在写作的人可以很容易地理解它。“我只是给出了区别以及如何使用它。”大卫。如果你知道这一点,而不是在这里评论,为什么不编辑它。那么这些都没有意义。我已经换了,谢谢。