我正在将旧的VBSCript WSC组件重写为更好的C#COM组件.
出于可怕的原因,一个地方的旧组件通过使用传递服务器上下文,IServer
Set objCurr = CreateObject("MTxAS.AppServer.1")
Set objCurrObjCont = objCurr.GetObjectContext()
Set component.servercontext = objCurrObjCont("Server")
Run Code Online (Sandbox Code Playgroud)
这用于做标准 Server.MapPath("/somelocation")
但是,我对.Net COM组件中的操作感到困惑,System.Web.HttpContext.Current.MapPath()因为没有Web上下文而无法正常工作.
我尝试将经典ASP中的上下文传递给COM组件,但我不确定包含哪个引用,所以我可以调用正确的成员,Microsoft.Active X Data Objects 2.7似乎很常见,但这只包括Recordsets等,没什么对于C++ IServer接口,它就像我们一样COM OBJECT.
有谁知道这样做的方法/解决方法?按照这个速度,我想我可能不得不改变组件的行为
我有10个.vbs文件并将它们合并到一个.vbs文件即Main.vbs.Now如果我双击main.vbs,我的脚本开始运行.但我正在寻找可以从网络浏览器运行.vbs文件?所以没有人需要去Main.vbs保存的目录并双击它.
我的Main.VBS内容:
Dim oShell : Set oShell = WScript.CreateObject ("WScript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
oShell.CurrentDirectory = FSO.GetFile(Wscript.ScriptFullName).ParentFolder
oShell.run "A.VBS", 1, True
oShell.run "B.VBS", 1, True
oShell.run "C.VBS", 1, True
oShell.run "D.VBS", 1, True
Run Code Online (Sandbox Code Playgroud) 我在一个文件夹中有一堆文本文件,我需要将编码更改为Unicode,而不是手动打开文件并将它们保存为Unicode我希望有一个脚本来执行此操作.
这些文件目前采用UTF-8编码,而我极其有限的脚本编写能力无法解决这个问题.我发现下面的代码从ANSI转换为Unicode,当我使用这个代码时,它确实将它转换为Unicode,但它会弄乱字符,因此转换实际上不起作用.有什么想法吗?提前致谢.
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder("C:\test")
Set oFiles = oFolder.files
For each file in oFiles
If Right(file.Name, 3) = "txt" Then
Set ANSIFile = fso.OpenTextFile(file.path, 1, False, False)
ANSIContent = ANSIFile.ReadAll
Set UNICODEFile = fso.OpenTextFile(file.path, 2, False, True)
UNICODEFile.Write ANSIContent
End If
Next
Run Code Online (Sandbox Code Playgroud) 这对我来说很糟糕哈哈,我几乎检查过谷歌搜索的每一页,我仍然不清楚如何去做.
我想在VB Script中创建一个名为data2的多维数组.尝试我见过的例子,但是我收到了"下标超出范围"的错误
Dim data2()
sub grabdata
SQL_query = "SELECT * FROM MSAccess_table"
Set rsData = conn.Execute(SQL_query)
Do Until rsData.EOF = True
ReDim Preserve data2(UBound(data2) + 1)
data2(UBound(data2)) = Array(rsData("id"),rsData("column_1"),rsData("column_2"),rsData("column_3"),rsData("column_4"))
rsData.moveNext
Loop
end sub
Run Code Online (Sandbox Code Playgroud)
基本上我正在尝试学习如何在VB脚本中创建一个多维数组并使用循环添加它.在我的案例中可以使用哪些基本示例?
最近我安装了两个Windows更新KB2574819和KB2592687对RDP 8.0我的32位Windows 7 Service Pack 1台的PC进行远程桌面登录.要启用RDP 8.0,我必须从组策略中启用它.为此,我必须运行gpedit.msc然后转到路径
计算机配置 - >管理模板 - > Windows组件 - >远程桌面服务 - >远程桌面会话主机 - >远程会话环境 - >启用远程桌面协议8.0.并设置压缩算法RDP数据,以"优化使用更少的网络带宽"
如果我手动更改组策略它完全正常.但我需要使用脚本来完成这一部分,为此,我要度过难关.谷歌搜索了两天后,我得出这样的结论:当我从组策略启用RDP 8.0时,它会影响两件事:1.注册表2."C:\ Windows\System32\GroupPolicy\Machine\Registry.pol".
注册表:通过使用ProcMon软件,我发现注册表中的更改是在以下路径中进行的
"HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{BE9DF25D-98DB-44BA-844D-20120DDC758D}Machine\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\fServerEnableRDP8"
Run Code Online (Sandbox Code Playgroud)
这意味着如果我将值1设置为fServerEnableRDP8,它将起作用.但问题是,在路径中,"{BE9DF25D-98DB-44BA-844D-20120DDC758D}"即使每次安装更新,每台机器都会更改.这就是为什么在安装更新后我无法直接将值设置为注册表.
Registry.pol:我手动在我的电脑上启用了RDP 8.0.然后在目标PC中我用它替换了它的Registry.pol文件.gpedit.msc显示已启用RDP 8.0但在远程会话期间它不使用RDP 8.0(顶部栏上没有网络标志,它是RDP 8.0指示符).其背后的原因是,当我替换Registry.pol文件并运行命令"gpupdate/force"时,它在注册表中创建了一个新路径.当我再次从gpedit.msc手动启用时,它创建了另一个路径.主要是{BE9DF25D-98DB-44BA-844D-20120DDC758D}路径和窗口中的数值(例如)更改遵循注册表中gpedit.msc创建的路径.
我找到了关于组策略对象但我没有找到关于它的更多或适当的文档.
所以我的问题是
提前致谢.
我需要用"一个字符串替换什么都没有.
我试过了:
replace(mystring, """, "")
Run Code Online (Sandbox Code Playgroud)
我想要:
String = " "my string " " --> " my string"
Run Code Online (Sandbox Code Playgroud) Set oShell = CreateObject("WScript.Shell")
oShell.Run "cmd /c c:"
Run Code Online (Sandbox Code Playgroud)
这条线执行得非常好.现在我需要输入一个文本.
例如: c:\users> "abcd"
如何在已打开的cmd提示符中进行此操作.
作为标题首字母,我需要填充now()函数以格式"YYYYMMDDHHMMSS"显示
我确实有一个关于尝试将其拆分出来的游戏,但这会丢掉我需要保留的前导零
mydt下面的例子是"27/02/2015 13:02:27"
mydt = now()
MSGBOX Year(mydt)& Month(mydt)& Day(mydt)& Hour(mydt)& Minute(mydt)& second(mydt)
Run Code Online (Sandbox Code Playgroud)
这将返回"201522713227"
我需要它返回"2015 0 22713 0 227"我可以使用if <10但是必须有一个更光滑的方式
我的SSRS报告中需要一个行值,该值是基于报告中已经使用的几个字段计算出来的.我希望它显示在名为'textboxPercentageValue'的文本框中.在半简单英语中,表达式/公式为:
If the value of the "Week" field is "WK1", display the value of the Variance field divided by the value of the Price field; otherwise, just display the value from the Variance field.
Run Code Online (Sandbox Code Playgroud)
在VB脚本gobbledygook中,我添加到textboxPercentageValue的Value属性的表达式/公式是:
=IIF((Fields!Week.Value="WK1"), Fields!Variance.Value / Fields!Price.Value, Fields!Variance.Value)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将.rdl文件上传到SQL Server Reporting Services时,我得到:
" 文本框'textboxPercentageValue'的值表达式直接指向字段'Week'而不指定数据集聚合.当报表包含多个数据集时,数据区域外的字段引用必须包含在指定数据集范围的聚合函数中.(rsFieldReferenceAmbiguous)获取联机帮助文本框'textboxPercentageValue'的值表达式直接指向字段'Variance'而不指定数据集聚合.当报表包含多个数据集时,数据区域外的字段引用必须包含在聚合函数中指定数据集范围.(rsFieldReferenceAmbiguous)获取联机帮助文本框'textboxPercentageValue'的值表达式直接指向字段'Price'而不指定数据集聚合.当报表包含多个数据集时,数据区域外的字段引用必须包含在指定数据集范围的聚合函数中.(rs FieldReferenceAmbiguous)获取联机帮助文本框'textboxPercentageValue'的值表达式直接指向字段'Variance'而不指定数据集聚合.当报表包含多个数据集时,数据区域外的字段引用必须包含在指定数据集范围的聚合函数中.(rsFieldReferenceAmbiguous) "
那么我需要做些什么来使这个表达式/公式明确无法与SQL Server Reporting Services或VBScript解析器或"谁"抱怨它?
vbscript ×10
aggregates ×1
asp-classic ×1
bids ×1
c# ×1
com ×1
console ×1
date ×1
encoding ×1
formats ×1
group-policy ×1
interactive ×1
interpreter ×1
loops ×1
rdl ×1
registry ×1
string ×1
text ×1
unicode ×1
utf-8 ×1