在我的代码段中,当我编写文件名脚本时,它在以下行给我一个权限被拒绝:
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 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.
有谁知道这样做的方法/解决方法?按照这个速度,我想我可能不得不改变组件的行为
此函数将一行插入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) 我想在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文档未更新.
有谁可以帮我解决这个问题?
提前致谢
以下是我现在启动应用程序的一些示例代码:
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中最小化启动此应用程序?
我不是一个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,为空!
我错过了什么?
提前致谢
我想检查进程是否正在运行?如果进程没有运行,那么我执行它(在这个例子中我带了进程名称= 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) 添加到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) 如何从启动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() …
假设我有一组数字23,56,128,567,我必须应用一个条件逻辑,如果myData上面一组数字中存在一个变量,那么只有我继续,否则我不会.
抱歉,必须查看一些遗留代码,并且不确定如何在VBScript中执行此操作.