标签: vbscript

vbscript:fso.opentextfile权限被拒绝

在我的代码段中,当我编写文件名脚本时,它在以下行给我一个权限被拒绝:

Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)
Run Code Online (Sandbox Code Playgroud)

这是脚本

'output log info
Function OutputToLog (strToAdd)  
    Dim strDirectory,strFile,strText, objFile,objFolder,objTextFile,objFSO
    strDirectory = "c:\eNet"
    strFile = "\weeklydel.bat"
    'strText = "Book Another Holiday"
    strText = strToAdd

    ' Create the File System Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    ' Check that the strDirectory folder exists
    If objFSO.FolderExists(strDirectory) Then
       Set objFolder = objFSO.GetFolder(strDirectory)
    Else
       Set objFolder = objFSO.CreateFolder(strDirectory)
       'WScript.Echo "Just created " & strDirectory
    End If

    If objFSO.FileExists(strDirectory & strFile) Then
       Set objFolder = objFSO.GetFolder(strDirectory)
    Else …
Run Code Online (Sandbox Code Playgroud)

vbscript file-permissions

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

COM组件中的Server.MapPath

我正在将旧的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.

有谁知道这样做的方法/解决方法?按照这个速度,我想我可能不得不改变组件的行为

c# com vbscript asp-classic

4
推荐指数
1
解决办法
1254
查看次数

VBscript和ADO - 3704关闭对象时不允许操作

此函数将一行插入SQL数据库,并需要返回创建的标识号:

Function WriteDatabase(backupTypeID, numImages, folderSize, success, errorMessage, strLogFileName)

    On Error Resume Next
    err.clear
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    objConnection.Open "Provider=SQLOLEDB;Data Source=x.x.x.x;Initial Catalog=DB;User ID=sa;Password=xxxxxx"
    sqlquery = "INSERT INTO tblImageCopies (BackupCopyDate, BackupCopyTypeID, NumImages, ImagesFolderSize, Success, ErrorMessage) VALUES (GETDATE(), " & backupTypeID & ", " & numImages & ", " & folderSize & ", " & success & ", " & errorMessage & "); SELECT scope_identity() AS ImageCopyID;" 
    objRecordSet.Open sqlquery,objConnection
    objRecordSet.MoveFirst
    WriteDatabase = objRecordSet("ImageCopyID")
    objRecordSet.Close
    objConnection.Close
    If err.number <> 0 …
Run Code Online (Sandbox Code Playgroud)

sql database vbscript ado

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

自动打开,更新和保存Excel工作簿

我想在excel中自动修改列的数字格式.

Set excel = CreateObject("Excel.Application")
Set oWB = excel.Workbooks.Open("E:\Docs\Invoice.csv")

/* Excel Macro starts */
Columns("G:G").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("H:H").Select
Selection.NumberFormat = "0.00"
/* Excel Macro ends */

oWB.save
oWB.Application.Quit
Run Code Online (Sandbox Code Playgroud)

我使用命令行运行.vbs.Excel文档未更新.
有谁可以帮我解决这个问题?

提前致谢

vbscript excel

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

有没有办法使用WScript.Shell启动使用VBScript最小化的程序?

以下是我现在启动应用程序的一些示例代码:

Set objShell = Wscript.CreateObject("WScript.Shell")     
objShell.Run """C:\Program Files\Handbrake\HandBrakeCLI.exe"""
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容以最小化启动应用程序,但它无法正常工作.我假设这仅适用于正常的命令提示符?

Set objShell = Wscript.CreateObject("WScript.Shell")     
objShell.Run "start /MIN ""C:\Program Files\Handbrake\HandBrakeCLI.exe"""
Run Code Online (Sandbox Code Playgroud)

我也尝试启动一个快捷方式(只是给出了一个空错误,脚本无法运行)以及尝试做一个sendkeys最小化它根本不起作用.

这是来自通过cscript.exe运行的VBScript.

有谁知道如何在VBScript中最小化启动此应用程序?

windows vbscript command-line command-line-arguments

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

经典ASP:RecordSet字段没有任何价值

我不是一个ASP开发人员,所以有点迷失.

我有以下数据访问代码:

sSQL = "SELECT answer_id, company_name, old_access_company_name, answer, flag_asker_notified FROM Q01_ask_sheiiba_answer_company2 WHERE question_id="& sQuestion_id &" ORDER BY answer_id"
rs.open sSQL, conn  
DO WHILE NOT rs.EOF
    Response.Write(rs.Fields("answer"))
    rs.MoveNext
LOOP
Run Code Online (Sandbox Code Playgroud)

我已经通过在调用之前将其输出到响应来测试sql查询是否正确构建.它产生以下查询:

SELECT answer_id, company_name, old_access_company_name, answer, flag_asker_notified 
FROM Q01_ask_sheiiba_answer_company2 
WHERE question_id=988 
ORDER BY answer_id
Run Code Online (Sandbox Code Playgroud)

当我将那个确切的查询复制到sql management studio并运行它时,我得到5行的预期结果,每行包含每个单元格中的数据,但是,当我通过上面的代码运行它时,我获得了相同的5行相同的单元格数据,列为EXCEPT answer,为空!

我错过了什么?

提前致谢

vbscript field ado recordset asp-classic

4
推荐指数
1
解决办法
7311
查看次数

检查进程是否正在运行?

我想检查进程是否正在运行?如果进程没有运行,那么我执行它(在这个例子中我带了进程名称= calc.exe的计算器)我启动了批处理脚本,但我有一个语法问题我相信!

@echo off
Set MyProcess=calc.exe
echo %MyProcess%
pause
for /f "tokens=1" %%i In ('tasklist /NH /FI "imagename eq %MyProcess%"') do set ff=%%i
echo %ff%
If /i %ff%==%MyProcess% (Echo %ff% est en cours d^'execution) Else (Start %MyProcess%)
pause
Run Code Online (Sandbox Code Playgroud)

vbscript batch-file batch-processing

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

HTA和'x-ua-compatible'元标记

添加到2014年6月19日发布

谢谢邦德.既然你有IE9,我感谢你的测试.希望如果那里的人有IE 10,他们也会测试它.没有任何意义,为什么在IE 11引擎下你只能运行兼容性ie8.


我创建了这个微小的,非常小的HTA,以便发布它,希望我能找到我所缺少的东西.

我的系统是带有IE 11的Win7 Pro 64位.

当我将元标记设置为:

<meta http-equiv="x-ua-compatible" content="ie=8">
Run Code Online (Sandbox Code Playgroud)

HTA运行时非常敏锐.没问题.但当我把它改为:

<meta http-equiv="x-ua-compatible" content="ie=9">
Run Code Online (Sandbox Code Playgroud)

它运行得不那么好.

现在......我知道IE 11和VBScript之间有一个大家庭爆发.VBscript被赶出了家门.IE 11拒绝再与它通信.所以我可以理解为什么将它设置为content ="ie = edge"是行不通的.但是为什么将它设置为content ="ie = 9"时它不起作用?

<!DOCTYPE html>
<head>
<meta http-equiv="x-ua-compatible" content="ie=8">
<hta:application
applicationname="Hmmmmmm"
singleinstance="yes"
id="oHTA"
>
<title>Huh? What?</title>
<script language="VBScript">

Option Explicit
Dim objFSO,file

Sub Window_OnUnLoad
   Set objFSO=CreateObject("Scripting.FileSystemObject")
   Set file=objFSO.OpenTextFile("c:\temp\submit.txt",2,True)
   file.Write oHTA.document.getElementById("aa").value
   file.Close
   Set objFSO=Nothing
   Set file=Nothing
End Sub

Sub Window_OnLoad
   window.ResizeTo 240,130
End Sub

Function Form_OnSubmit()
   window.Close
   Form_OnSubmit=False
End Function

</script>
</head>
<body style="margin:30px;">
<form id="form" action=""> …
Run Code Online (Sandbox Code Playgroud)

vbscript hta meta-tags internet-explorer-11

4
推荐指数
1
解决办法
8594
查看次数

将测试参数从.vbs传递到QTP测试

如何从启动QTP测试的.vbs文件中获取测试参数?我可以从.vbs文件运行我的测试,没有任何输入参数就好了,但我似乎找不到从文件中获取参数到测试的方法.

这是我到目前为止:

Set qtp = CreateObject("QuickTest.Application")

'Launch QTP
qtp.Launch

'Set QTP visible
qtp.Visible = True

'Run Mode - Fast
qtp.Options.Run.RunMode = "Fast"

'View Results - True
qtp.Options.Run.ViewResults = True

'Open the test
qtp.open "C:\MY\TEST", True

Set test = qtp.Test

Set params = test.ParameterDefinitions.GetParameters()

parameter1 = "par1"
parameter2 = "par2"

params.Item(par1).Value = "This is my first parameter"
params.Item(par2).Value = "This is my second parameter"

Set qtpResultsLocation = CreateObject("QuickTest.RunResultsOptions")

qtpResultsLocation.ResultsLocation = "C:\SOME\RESULTS\FOLDER"
test.Run qtpResultsLocation

test.Close

Msgbox("Closed test.. closing application")
qtp.quit
Run Code Online (Sandbox Code Playgroud)

我觉得需要某种形式test.ParameterDefinitions.SetParameters() …

vbscript qtp hp-uft

4
推荐指数
1
解决办法
4340
查看次数

检查值是否在数字列表中

假设我有一组数字23,56,128,567,我必须应用一个条件逻辑,如果myData上面一组数字中存在一个变量,那么只有我继续,否则我不会.

抱歉,必须查看一些遗留代码,并且不确定如何在VBScript中执行此操作.

vbscript

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