Batch file 批处理文件的永久变量
我的程序是一个特定程序的基于GUI的安装和运行工具,当我说GUI时,我指的是批处理文件。当它安装一个程序时,它需要始终知道它安装在哪里,目前,它只是将它记录到一个变量中,但这只有在他们不关闭程序并在以后返回时才起作用,所以我想知道一种存储永久变量的方法。 我在想可能是这样的: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
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:这是个打字错误。正在写作的人可以很容易地理解它。“我只是给出了区别以及如何使用它。”大卫。如果你知道这一点,而不是在这里评论,为什么不编辑它。那么这些都没有意义。我已经换了,谢谢。