是否可以在.vbs中的路径中使用美国变量。我的基本情况是我有一个vbs脚本,该脚本通常将在一个人登录的计算机上运行,并由管理员使用完全不同的用户名运行(假定将右键单击该文件并以“运行方式”运行)。
该脚本为登录的人编辑位于用户目录中的ini文件。我知道我可以批量插入变量,"C:\Users\%Logger%\AppData\Local\stat.ini"然后替换该变量。但是我无法在.vbs中执行此操作。到目前为止,我的脚本。或在此处的答案中查看其中的大部分内容。
Dim blnRes: blnRes = 0
Dim strOld, strNew, logger
strOld = "frogg"
strNew = "frog"
logger = Inputbox("What is your Domain ID exactly as entered when you log into this machine?","Domain ID")
On Error Resume Next
Call update("C:\Users\logger\AppData\Local\stat.ini", strOld, strNew)
blnRes = blnRes Or (Err.Number = 0): Err.Clear
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将我标记logger为变量,或者有更简单的方法可以做到这一点?
ASP,C#,VB.NET是否有办法检索代码中的哪一行作为处理命令?
例
1 <%
2 response.write("Your on line " & retreiveCurrentLineNumber)
3 %>
Run Code Online (Sandbox Code Playgroud)
输出:你在线2
如何将参数从批处理传递给vbscript?我的批处理脚本在自动执行结束时发送一封电子邮件.为此,它使用/调用我的vbscript(email.vbs),它发送带有实际日志文件(具有执行结果)的电子邮件.所有这些日志文件都存储在特定文件夹中,例如:201207(2012年7月),201208(2012年8月)等等....我想传递文件夹名称或部分文件夹(我正在考虑硬编码2012部分并通过我的批处理从该参数获取月份数)它作为我的email.vbs的参数,以便它可以寻找正确的文件夹来获取正确的日志文件.说得通?
ECHO Checking the log file for errors...
FINDSTR /C:"RC (return code) = 0" %workDir%\%filenm%_Log.txt && (ECHO Deployment was successful.
ECHO Email is sent out...
cscript //nologo success_mail_DEV.vbs %workDir% 'passing the directory param. here.
ECHO Press ENTER to exit...
GOTO offshore) || (ECHO Deployment was not successful. Errors were found!
ECHO Email is sent out...
ECHO Press ENTER to exit...
cscript //nologo fail_mail_DEV.vbs %workDir% 'and here
GOTO offshore)
Run Code Online (Sandbox Code Playgroud)
这是我现在拥有的一部分.它正在检查日志文件中的错误并相应地调用该成功/失败邮件.现在,您在那里看到的2个vbs邮件脚本中硬编码了位置名称/编号.我确信有一种方法可以将某个参数传递给电子邮件vbscript.但是,我不知道该怎么做.
这是我的邮件vbscript:
Const ForReading = 1
Set args = WScript.Arguments
directory = …Run Code Online (Sandbox Code Playgroud) 我是VBScript的新手.我找不到使用VBS中的WMI将文件从一个XP主机复制到另一个主机的方法.复制文件的常用方法(RPC - 远程过程调用,SMB,UNC)不可用于多个主机,但WMI可供所有主机使用,我需要将文件从管理主机复制到目标Windows主机.我以为我会找到一些示例代码,但我没有找到相关信息.没有找到任何告诉我也无法做到的事情.
源文件是我的管理员计算机的'F:\ TEMP'文件夹中的可执行文件和'test1.txt'.我想把文件放在远程主机HOST1的'C:\ TEMP'文件夹中.我拥有两台主机的完全管理员权限.这是我到目前为止,只为一个文件(以保持测试简单):
strComputer = "HOST1"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery( _
"Select * from Win32_Directory where Name = 'c:\\temp'")
For Each objFiles in colFiles
errResults = objFolder.Copy("f:\temp\test1.txt")
Wscript.Echo errResults
Next
Run Code Online (Sandbox Code Playgroud) 我有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创建的路径.
我找到了关于组策略对象但我没有找到关于它的更多或适当的文档.
所以我的问题是
提前致谢.
vbscript ×10
asp-classic ×1
asp.net ×1
batch-file ×1
c# ×1
console ×1
copy ×1
encoding ×1
file ×1
group-policy ×1
interactive ×1
interpreter ×1
loops ×1
parameters ×1
registry ×1
text ×1
unicode ×1
utf-8 ×1
variables ×1
vb.net ×1
wmi ×1