Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
Vbscript 如何在下次运行脚本时保留全局变量的值?_Vbscript - Fatal编程技术网

Vbscript 如何在下次运行脚本时保留全局变量的值?

Vbscript 如何在下次运行脚本时保留全局变量的值?,vbscript,Vbscript,我有一个VBScript文件,它是从另一个调用的,它定义了一些全局变量,比如在每个函数和子函数之外的Dim var=“whatever”。这些变量可能会发生变化,可能是一条指令,比如var=“whatever2”,它们的新值可能会在其他VBScript文件所做的某些调用中使用。但问题是,每次调用文件时,它们的值都会重置为在定义全局值的位置显示的值,因此它会再次使用相同的值 我认为有两种方法可以解决这个问题:一种是创建一个文本文件,其中写入了所有实际正确的值,然后在调用脚本时从该文本文件中读取这些

我有一个VBScript文件,它是从另一个调用的,它定义了一些全局变量,比如在每个函数和子函数之外的
Dim var=“whatever”
。这些变量可能会发生变化,可能是一条指令,比如
var=“whatever2”
,它们的新值可能会在其他VBScript文件所做的某些调用中使用。但问题是,每次调用文件时,它们的值都会重置为在定义全局值的位置显示的值,因此它会再次使用相同的值

我认为有两种方法可以解决这个问题:一种是创建一个文本文件,其中写入了所有实际正确的值,然后在调用脚本时从该文本文件中读取这些值,尽管我认为必须有更好的方法。另一个是继续使用参数进行调用,但这可能会使应用程序复杂化很多,这正是使用全局变量的原因,所以我认为这不是一个真正的选择。我还认为,在函数中设置值不会有多大帮助,因为它们无论如何都会在之后重置


你知道我所说的是什么吗?

全局变量只有在其进程运行时才有效。如果需要持久化这些变量的值,以便在稍后再次运行脚本时它们可用,则需要将它们存储在其他位置

规范方法正在将值保存到文件中:

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\path\to\mystate.txt")
f.Write "var1=" & var1
f.Write "var2=" & var2
...
f.Close
或登记处:

Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKCU\Software\mystate\var1", var1, "REG_SZ"
sh.RegWrite "HKCU\Software\mystate\var2", var2, "REG_DWORD"
...
但是,如果您只需要它们在当前用户会话期间可用,还可以使用volatile环境:

Set sh = CreateObject("WScript.Shell")
Set env = sh.Environment("VOLATILE")
env("mystate_var1") = var1
env("mystate_var2") = var2
...

易失性环境仅对当前用户可用,当用户注销时将消失。

考虑使用COM对象作为从属对象

脚本组件生成vbscript COM对象。WSF脚本文件在一个文件中包含多个脚本,可以引用其他文件

从帮助

Windows®脚本组件为您提供了在脚本中创建功能强大、可重用的COM组件的简便方法。您可以使用支持Microsoft®ActiveX®脚本接口的任何脚本语言创建脚本组件。支持这些接口的脚本语言包括JScript、Microsoft®Visual Basic®Scripting Edition(VBScript)、PERLScript、PScript和Python

COM支持

这种新的脚本组件技术支持常见类型的COM组件,如自动化,并可通过附加组件(如DHTML行为)进行扩展

脚本组件

它们体积小,效率高

易于创建、维护和部署

提供创建COM组件的能力

提供对广泛系统服务的访问

使用脚本组件,您可以为各种任务创建COM组件,例如执行中间层业务逻辑、访问和操作数据库数据、向应用程序添加事务处理,以及使用DHTML行为向网页添加交互效果

和wsf文件

Windows脚本(*.wsf)文件是包含可扩展标记语言(XML)代码的文本文档。它包含了几个特性,为您提供了更大的脚本编写灵活性。因为Windows脚本文件不是特定于引擎的,所以它们可以包含来自任何与Windows脚本兼容的脚本引擎的脚本。它们就像一个容器

附加功能

.wsf文件支持您可以

包括声明

将VBScript或JScript文件中的函数合并到Windows脚本宿主项目中

多引擎 每个文件使用多个脚本语言

类型库 向代码中添加常量

工具

使用任何XML编辑器编辑文件

一个文件中有多个作业

将所有代码存储在一个位置