标签: vbscript

嵌入式VBScript中"<%"和"<%="之间有什么区别?

我正在开发一个代码库,它作为嵌入在HTML中的VBScript代码.我注意到所述代码行周围有以下两个不同的标签

<%= MyFunc(val1) %>
Run Code Online (Sandbox Code Playgroud)

<% MyFunc(val1) %>
Run Code Online (Sandbox Code Playgroud)

在这些部分的开头使用"="字符有什么区别?

html vbscript asp-classic

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

如何使用VBScript使用默认应用程序打开HTML文件?

我有一个HTML文件C:\Program Files\my_html_files\file.html.如何使用VBScript打开此文件?(通过"打开"我的意思是使用默认应用程序打开它,就好像它在资源管理器中双击一样.)

vbscript

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

我们如何使用vb脚本打开word文件

任何人都可以告诉我如何使用vbs windows脚本打开word文件.

我尝试了这两组vbs,但是当脚本"The system cannot find the file specified", errorcode: 80070002存在于指定位置时,会显示Windows脚本Host error().

我试过的第一个vbs:

Dim sAppPath
Dim sPrgFolder
sPrgFolder=CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%") 
sAppPath =sPrgFolder + "c:\UserGuide.doc"
WScript.CreateObject("WScript.Shell").Run sAppPath)
Run Code Online (Sandbox Code Playgroud)

第二个vbs我试过:

OPTION EXPLICIT
dim fso, ws, file_to_open, OFFICE_PATH
Set ws = WScript.CreateObject("WScript.Shell")
OFFICE_PATH = "C:\Program Files\Microsoft Office\Office"
file_to_open = CHR(34) & "C:\UserGuide.doc" & CHR(34)
ws.Run CHR(34)& OFFICE_PATH & "\winword.exe" & CHR(34) & file_to_open, 0, "FALSE"
Run Code Online (Sandbox Code Playgroud)

vbscript ms-word office-interop

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

使用vbscript在变量页面上打开浏览器

我正在尝试编写一些VBScript来打开特定网页上的浏览器.最终,这个网页对每个脚本都是唯一的.目前我有以下代码可行:

Dim objShell

objShell = CreateObject("Shell.Application")
objShell.ShellExecute("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "www.google.ie", "", "", 1)
Run Code Online (Sandbox Code Playgroud)

但我想得到以下工作:

Dim iURL As String
Dim objShell

iURL = "www.google.ie"

objShell = CreateObject("Shell.Application")
objShell.ShellExecute("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", iURL, "", "", 1)
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?任何帮助将不胜感激.

browser vbscript

3
推荐指数
1
解决办法
5万
查看次数

C#Math.Round和Nullable Doubles

我承担了将一个非常古老的经典ASP/VBScript/Access网站转换为"当前"网站的任务.正如您所怀疑的那样,大部分内容都比较简单,但是有一个报告页面依赖于一堆未记录的计算,所以我只需要使用他的代码/公式,但将它们移到C# .

只是为了完全公开,我将Access数据库导入SQL Server没有任何问题.我使用EntityFramewok PowerTools(Code First)对新数据库进行反向工程并创建我的.edmx文件.我注意到当EntityFramework为我创建了.edmx时,它将数据库中浮动的字段定义为C#类中可空的双打(Double?)...是否有任何转置,斩波或更改任何值的风险将float转换为nullable double时的方法?

我认为可疑的另一个方面是四舍五入.显然围绕舍入的数学没有改变,但我想知道VBScript和C#在它们如何回合中有任何已知的差异.

所以这些行在VBScript中

varA1=oDataRs("boundData")
varB1i=varA1*3.0689
varB1=round(varB1i,3)
Run Code Online (Sandbox Code Playgroud)

变成这是C#

var newVal = Math.Round(boundData.Value * 3.0689,3);
Run Code Online (Sandbox Code Playgroud)

我没有将任何东西转换为double或decimal,只是在数据库出来时使用它.我必须使用.Value,因为否则我不能乘以Double?和一个双.

这些值非常接近,但在相当重要的数据上偏差约为0.036,我找不到任何理由.

c# sql vbscript ms-access

3
推荐指数
1
解决办法
983
查看次数

为什么vbscript Mid函数显示错误'无效的过程调用或参数:Mid'

嗨下面是我的ASPClassic代码,其中csvData是一个非常大的字符串,包含variable.Now在此At行中Mid函数调用错误'无效过程调用或参数:Mid'出现为什么会发生这种情况...

Dim dataLen 
    Dim fromLen 
       Dim toLen 
       Dim slab 
       Dim totalPass 

       dataLen =len(csvData)
       fromLen =0
       toLen =100000
       slab =100000
       totalPass =(dataLen/slab)
    if (dataLen Mod slab)>0  then
        totalPass=totalPass+1
    end if
    Dim i
    For i = 0 To dataLen
        i=toLen
        if toLen > dataLen then
            toLen=dataLen
        end if 
       Response.Write Mid(csvData,fromLen,toLen)
        fromLen=toLen
        toLen=toLen+slab
    Next

vbscript asp-classic

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

在数组上拆分函数

我有多个分隔符大文本文件(1个长线)(例如:~,*,:).所述~分隔符标记一个新的部分,并且*:分隔符标记子部分或段.

我尝试了以下但是我遇到了类型不匹配错误,可能是因为该Split函数用于字符串而不是数组.

Dim  strFileLine, arrSection, arrSegment, arrSegField
strFileLine = "C:\sometextfile.txt"
arrSection  = Split(strFileLine, "~")
arrSegment  = Split(arrSection, "*")
arrSegField = Split(arrSegment, ":")
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此逻辑来保持我的段和段字段具有正确的部分,并将这些值插入数据库.

有关如何使用VBScript实现此目的的任何想法?

vbscript

3
推荐指数
1
解决办法
5万
查看次数

一个条件,多个事件

我试图弄清楚如何使用.vbs只使用一个条件来发生多个事件.(这里我尝试使用case语句.)是否有这样的命令,或者我是否必须为每一行重写命令?(这可以通过在之前的代码行中激活它来在记事本上输入.)

  msgbox("I was woundering how old you are.")
    age=inputbox("Type age here.",,"")
    Select Case age
    Case age>24
        x=age-24
        WshShell.SendKeys "I see you are "&x&" years older than me."
        WshShell.SendKeys "{ENTER}"
    Case age<24
        x=24-age
        WshShell.SendKeys "I see you are "&x&" years younger than me."
        WshShell.SendKeys "{ENTER}"
    Case age=24
        WshShell.SendKeys "Wow were the same age!"
        WshShell.SendKeys "{ENTER} "
    End Select
Run Code Online (Sandbox Code Playgroud)

vbscript events conditional-statements

3
推荐指数
1
解决办法
3651
查看次数

无效的过程调用或参数

我面临以下错误:

Microsoft VBScript runtime error '800a0005' 
Invalid procedure call or argument: 'left' 
/scheduler/App.asp, line 16 
Run Code Online (Sandbox Code Playgroud)

这条线是:

point1 = left(point0,i-1)
Run Code Online (Sandbox Code Playgroud)

此代码在另一台服务器上运行良好,但现在在另一台服务器上显示此错误.我猜它可能与系统或IIS设置有关,或者可能是其他东西,但它与代码无关(因为它在另一台服务器上工作正常).

vbscript asp-classic

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

是否有任何方法可以检测STDIN是否已在VBscript中重定向?

我试图处理/过滤器输入一个VBScript中,但只有在输入已通过管道输送到脚本.我不希望脚本处理用户/键盘输入.我想用这样的代码编写代码:

stdin_is_tty = ...
if not stdin_is_tty then
   ...
   input = WScript.StdIn.ReadAll
end if
Run Code Online (Sandbox Code Playgroud)

否则,脚本将挂起,在执行时等待用户输入WScript.StdIn.ReadAll(如果我测试流,则甚至更早WScript.StdIn.AtEndOfStream).

在C#中,我使用:

stdin_is_tty = not System.Console.IsInputRedirected // NET 4.5+
Run Code Online (Sandbox Code Playgroud)

接受答案问题:"如果Console.In(标准输入)已经被重定向如何检测?" 显示如何通过P/Invoke使用Win32调用为早于.NET 4.5的.NET版本构建该结果.但我不知道有任何方法将该方法转换为VBscript.

我构建了一个笨拙的部分解决方案,SendKeys用于将流末尾序列发送到脚本的键盘缓冲区.但是如果STDIN 重定向,解决方案会在缓冲区中留下密钥,除非我知道STDIN被重定向,否则我无法清理...所以,同样的问题.

我宁愿将脚本保存在一个打包的部分中,所以我宁愿避免单独的包装脚本或通用Windows 7+安装中没有的任何东西.

任何精彩的想法或解决方法?

编辑:添加初始解决方案的副本

我在这里添加了我改进的初始解决方案的副本(不可否认,这是一个"黑客"),现在它已经清理了,但仍有几个底片:

input = ""
stdin_is_tty = False
test_string_length = 5 ' arbitrary N (coder determined to minimize collision with possible inputs)
sendkey_string = ""
test_string = ""
for i = 1 to test_string_size
   sendkey_string = …
Run Code Online (Sandbox Code Playgroud)

vbscript stdin io-redirection

3
推荐指数
1
解决办法
1018
查看次数