标签: vbscript

我该如何学习编写程序?

我想学习如何编程计算机.我觉得我对计算机比一般人更有经验,我每天都使用命令提示符,我知道如何在命令提示符下访问命令行,但我不知道应该从哪个程序开始,用什么语言使用.下载某种语言或使用我的计算机上的某个程序(如命令行或vbscript)会更好吗?

我今天早上下载了C#,已经编写了两个程序.他们是小型的控制台程序,但我学得很快,熟悉这门语言.

vbscript command-line

6
推荐指数
2
解决办法
1043
查看次数

如何从VBScript获取程序文件环境设置

在批处理文件中,您可以使用%PROGRAMFILES%来获取程序文件目录的位置,如何在VBScript中执行此操作?

vbscript environment-variables

6
推荐指数
2
解决办法
3万
查看次数

VBS - 获取默认打印机

使用下面显示的Wscript.Network对象,有一种简单的方法来检索计算机上的默认打印机吗?我知道如何设置默认打印机,但我希望获得当前的默认打印机名称.我有Windows 2000,XP和7客户端的混合物,因此不想使用WMI.

Set objNetwork = CreateObject("WScript.Network") 
Set objLocalPrinters = objNetwork.EnumPrinterConnections
Run Code Online (Sandbox Code Playgroud)

printing vbscript

6
推荐指数
1
解决办法
2万
查看次数

将凭据传递给VBS中的WMI调用

我在HTA中有VBScript从本地WMI调用获取ping状态..我还有一个函数来获取远程pc的最后一次重启时间..

Function GetReboot(strComputer)
    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
    For Each objOS in colOperatingSystems
        dtmBootup = objOS.LastBootUpTime
        dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
        dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
        Wscript.Echo dtmSystemUptime
    Next
    GetReboot = dtmLastbootupTime
End Function
Run Code Online (Sandbox Code Playgroud)

这大致就是它,显然我声明了变量,并有另一个日期函数等.

如果我WMI调用"localhost",因为我是本地管理员,这是有效的.但是当对远程服务器进行WMI调用时,这只有在我使用AD管理员帐户登录到本地计算机时才有效.

有没有办法可以提示用户输入用户名和密码,然后将其传递给WMI调用,以便它可以像管理员详细信息一样工作?

vbscript wmi credentials hta

6
推荐指数
1
解决办法
2万
查看次数

VBScript部分解析器

我正在尝试创建一个VBScript解析器.我想知道最好的方法是什么.我研究过和研究过.最流行的方式似乎是像Gold Parser或ANTLR这样的东西.

我想实现的功能是动态检查VBScript中的语法错误.每次文本更改时,我都不想编译整个VBS.我该怎么做呢?我尝试使用Gold Parser,但我认为没有增量方法可以通过它进行解析,比如部分解析树...有关如何为这种情况实现部分解析树的任何想法?

我通过GOLD Parser实现了VBscript Parsing.但是它仍然不是部分解析器,在每次文本更改后解析整个脚本.有没有办法建立这样的东西.

THKS

vbscript parsing antlr gold-parser

6
推荐指数
1
解决办法
3754
查看次数

在vbs中发送Windows键?

我到处找这个,真的有可能吗?如果您按 WIN + 向左箭头,它会将您选择的窗口安装到屏幕左侧,这正是我想要做的。

我试过这样的事情:

shl.sendkeys "#{LEFT}"
Run Code Online (Sandbox Code Playgroud)

因为我发现这#可能适用于 WIN,就像+适用于 Shift 和%Alt 一样。

这可能是一个愚蠢的问题,但它会帮助我很多。谢谢你的时间

vbscript

6
推荐指数
2
解决办法
3万
查看次数

SQL 本机客户端数据类型兼容性 - 与 SQLOLEDB 不兼容

在切换到使用 SQL Native Client (SQLNCLI) 作为 ADO 提供程序时,我们的旧应用程序遇到了问题。

我们原来的连接字符串是:

Provider=SQLOLEDB; Server=host; Database=bob; Integrated Security=SSPI;
Run Code Online (Sandbox Code Playgroud)

我们将其更改为:

Provider=SQLNCLI11; Server=host; Database=bob; Integrated Security=SSPI; DataTypeCompatibility=80;
Run Code Online (Sandbox Code Playgroud)

我们发现,在调用存储过程时,使用 adDBTimeStamp 参数,Native Client 似乎将时间戳视为 smalldatetime,而不是 datetime。这给我们带来了问题,因为我们在某些比较中使用 9999 年 12 月 31 日作为“最高端”日期,而 Native Client 因“无效日期格式”错误而失败,而 SQLOLEDB 没有问题。

现在看起来我们可能只能在创建参数时将 adDBTimeStamp 更改为 adDate 作为数据类型,但是我想知道在我们继续进行代码更改之前,连接字符串中是否缺少某些内容。

VBScript 代码重现如下。为免生疑问,在有人建议我们应该使用 12/31/9999 之前,日期格式是 UK (dd/mm/yyyy) :-) 但还要确认一下,CDate 不会失败。

Set db = CreateObject("ADODB.Command")

' If Provider=SQLOLEDB then there is no error.
db.ActiveConnection = "Provider=SQLNCLI11; Server=host; Database=bob; Integrated Security=SSPI; DataTypeCompatibility=80;"
db.CommandText = "usp_FetchData"
db.CommandType = &H0004

' …
Run Code Online (Sandbox Code Playgroud)

vb6 vbscript ado sqlncli

6
推荐指数
1
解决办法
2057
查看次数

ADODB.Parameters 错误 '800a0e7c' 参数对象定义不正确。提供了不一致或不完整的信息

我主要是一名 PHP 开发人员,但我有一些旧的 ASP,我们以前的开发人员之一弄坏了,我不知道如何修复它。我们有一个程序将一些变量发送到侦听器页面,该页面将这些数据与 msSQL 数据库的注册代码进行比较,然后让程序知道注册代码是否有效。

我收到以下错误

.Parameters.Append .CreateParameter("@code", adVarChar, 1, 50, x)
Run Code Online (Sandbox Code Playgroud)

是第 134 行:

ADODB.Parameters 错误“800a0e7c”

参数对象定义不正确。提供了不一致或不完整的信息。

/checkregistrationpro.asp,第 134 行

我已经在包含文件中指定了我未包含在代码中的任何命名常量,因此与此无关。

我的连接字符串(我已经验证这些设置是正确的):

set conn = Server.CreateObject("ADODB.Connection")
set cmd = Server.CreateObject("ADODB.Command")
sConnString = "Provider=sqloledb; Data Source=MYDATASOURCE; Initial Catalog=MYCATALOG; User ID=MYUSERID; Password='MYPASSWORD';"
conn.Open sConnString
Run Code Online (Sandbox Code Playgroud)

我的代码:

...

Function BlockInjectCode(StrVal)
    BlockInjectCode = Replace(StrVal,"--","")
    BlockInjectCode = Replace(BlockInjectCode,"'","")
    BlockInjectCode = Replace(BlockInjectCode,"""","")
    if instr(lcase(BlockInjectCode),"<") > 0 then
        BlockInjectCode = ""
    end if
End Function

    x = BlockInjectCode(Request.QueryString("rid"))
    uid = BlockInjectCode(Request.QueryString("uid"))
    chkcode = BlockInjectCode(Request.QueryString("Code"))
    CheckPro = …
Run Code Online (Sandbox Code Playgroud)

vbscript adodb dllimport asp-classic

6
推荐指数
1
解决办法
8897
查看次数

AppActivate 并不总是激活应用程序窗口

所以我正在研究一些可以自动化 Internet Explorer 的 VBScript:打开它、导航并下载一个文件。我已经让它工作了,但是有一个问题在于我需要向它发送击键。SendKeys正在为我工​​作,但问题是当我习惯于AppActivate将焦点设置在 IE 上时,它并不总是有效。基本上可以分为以下两种情况:

案例 1:双击我的 .vbs 文件,自动化过程顺利进行。窗口被激活,一切正常。

情况 2:双击我的 .vbs 文件,其他一些应用程序会打开一个窃取焦点的窗口(或手动单击其他内容以更改焦点)。当AppActivate稍后执行该行时,IE 永远不会获得焦点并且击键显然不会通过。

那么你们对为什么AppActivate不设置焦点有什么想法吗?

这是我用来激活 IE 窗口的代码:

Do While Not wshell.AppActivate("Active Agents - Internet Explorer")
    WScript.Sleep(1)
Loop
Run Code Online (Sandbox Code Playgroud)

vbscript internet-explorer automation focus

6
推荐指数
1
解决办法
1760
查看次数

有没有办法从批处理脚本中存储和检索文件中的密码?

@ECHO OFF
DFC.EXE get /isfrozen

IF Errorlevel 1 GOTO Frozen
IF Errorlevel 0 GOTO Thawed

:Frozen
Echo Errorlevel 1 Computer is Frozen, Thawing Now
DFC.EXE fakepassword123 /BOOTTHAWED
Echo
Goto END

:Thawed
Echo Errorlevel 0 Computer is Not Frozen
Echo
Goto END

:END
Exit
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行一个非常简单的批处理文件,但如果有人要编辑密码,我不希望以纯文本形式存储密码。

现在 DFC.exe 密码行是存储密码的地方。

有没有办法将此密码隐藏在另一个文件中并从那里调用它?

windows vbscript powershell batch-file

6
推荐指数
1
解决办法
1389
查看次数