标签: vbscript

从Windows Installer自定义操作执行脚本文件

我需要在Windows安装程序项目(标准OOTB VS 2008安装程序项目-vdproj)中执行批处理文件作为卸载过程的一部分.无法直接从安装程序项目中的自定义操作执行bat文件,因此我编写了一个快速的vbs脚本来调用所需的bat文件.
vbs代码:

Set WshShell = WScript.CreateObject( "WScript.Shell" )
command = "uninstall-windows-serivce.bat"
msgbox command
WshShell.Run ("cmd /C " & """" & command & """")
Set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)

当此脚本独立于卸载运行时,它可以完美地运行.但是,当作为卸载的一部分运行时,它不会执行bat文件(但会显示消息框,因此我知道调用了vbs文件).没有报告错误(至少我可以告诉).为什么此脚本不能作为"卸载自定义操作"的一部分工作

vbscript windows-installer visual-studio-2008

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

知道用户是否具有VBScript管理权限的最佳方法

我需要检查执行脚本的用户在计算机上是否具有管理特权。

我指定了执行脚本的用户,因为该脚本可能已由与登录用户不同的用户执行,而类似于“ Runas”。

@哈维尔:两种解决方案都可以在装有英文版Windows的PC上运行,但如果安装的语言不同则不能。这是因为Administrators组不存在,所以名称有所不同,例如西班牙语。我需要解决方案才能在所有配置中工作。

vbscript privileges

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

VBScript,JScript,Wscript ......哦,我的

我需要为WinXP编写一些脚本来支持Big Financial Corp.的一些分析师.请帮我确定哪种类型的Windows脚本最适合我的需求.

我的需求看起来很简单(无论如何对我来说)

  1. 在WinXP Pro SP2上运行(2002版)
  2. 不需要我的用户安装任何东西(所以Powershell已经出来了.同样是Perl,Python,以及关于stackoverflow上这些类型的问题的其他常见建议)
  3. 用非编译语言编写(因此用户将来有机会修改它们)
  4. 合理完整的语言功能(特别是日期/时间操作功能.我想也有现象概念,如子程序,递归等)
  5. 启动和控制其他程序的能力(在命令行)

从我对我的选择的匆忙审查,看起来我的选择

  1. VBScript中
  2. WScript的
  3. JScript中

我没有时间学习或深入研究这些(或者其他任何可用的标准WinXP安装).我迫切需要尽快选择和破解一些东西.

(目前的危机是需要运行给定的应用程序,传递几个日期参数).

一旦目前的危机结束,就会有更多这样的要求.

帮助我Obi Wan Stackoverflow ...你是我唯一的希望.

[edit]我目前的技能包括Perl,Javascript和Java,所以我最喜欢使用类似的东西

[编辑]好的.我将尝试在JScript中编写WSH文件.谢谢大家......一旦事情在这里安定下来,我会让你知道它是怎么回事(并想出一个接受答案).

[编辑]最终都解决了.感谢快速响应的人们.这是我给用户的内容

<job id="main">
    <script language="JScript">
// ----- Do not change anything above this line ----- //

var template = "c:\\path\\to\\program -##PARAM## --start ##date1## --end ##date2## --output F:\\path\\to\\whereever\\ouput_file_##date1##.mdb";

// Handle dates
// first, figure out what they should be
dt = new Date();
var date1 = stringFromDate(dt, 1);
var date2 = stringFromDate(dt, 2);

// then insert …
Run Code Online (Sandbox Code Playgroud)

windows vbscript scripting batch-file jscript

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

VBScript中对象的破坏顺序是什么?

.vbs中的对象以什么顺序销毁?

也就是说,给定这些全局变量:

Set x = New Xxx
Set y = New Yyy
Run Code Online (Sandbox Code Playgroud)

我对以下任何一个问题的答案感兴趣.

  1. 对于.VBS中实现的类的实例,将以什么顺序Class_Terminate调用?粗略的戳戳建议创造的顺序(而不是逆序!),但这有保证吗?

    编辑:我知道Class_Terminate将在释放对象的最后一次引用时调用.我的意思是:x和y的发布顺序是什么,是否有保证?为简单起见,假设x和y是对其各自对象的唯一引用.

  2. 对象的类型是否重要?例如,如果我在.VBS中实现的类与其他COM对象混合在一起,例如Scripting.FileSystemObject.

    编辑:我知道COM库可能会设置自己的内部循环引用,脚本主机引擎一无所知; 我有兴趣探索可能影响第一个问题答案的内容.

  3. 上述不同的答案如果x和y是Sub或Function的本地而不是全局?
  4. 是否取决于退出是正常的,例外还是通过WScript.Quit?(在后一种情况下,似乎Class_Terminate在退出之前仍然会调用任何未完成的对象,但这些可能会导致报告错误).
  5. 什么时候WScript对象被破坏?
  6. 脚本是否重要?(wscript.exe vs cscript.exe与调用Web主机引擎无关)
  7. JScript的对象销毁模型与VBScript的不同吗?

我可以凭经验找到其中一些问题的答案,但我对它们中的任何一个是否得到保证 /记录感兴趣.

即使你只知道一些答案 - 或进一步的相关问题,请发帖.

windows vbscript destructor object-lifetime

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

将每个工作表导出到单独的csv文件

我需要通过VBA/VBS脚本以编程方式将所有工作表(总共4个,我知道名称)导出到同一文件夹中名为csv文件的工作表,而无需加载excel并手动运行宏.

理想情况下,脚本会将源文件路径/ filename.xls和导出文件路径作为命令行参数.

我已经阅读了许多Excel VBA脚本,只是在Excel中执行此操作,我看到一些用于加载excel工作簿以导出第一个工作表.但是,当我尝试混合这两个时,我得到了这个错误:

(1,12)预期结束声明

Dim source As Workbook
Set source = Application.Workbooks.Open(WScript.Arguments.Item(0), ReadOnly:=True)
For Each sheet In source.Sheets
.SaveAs Filename:= WScript.Arguments.Item(1) & Source.Sheets.Name, FileFormat:=xlCSV
Next sheet
wb.Close
Run Code Online (Sandbox Code Playgroud)

csv vbscript excel vba excel-vba

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

获取当前目录并在vbscript中运行文件?

我试图看看IIS是否已安装,如果未安装IIS,则显示消息和下载exe到INstall IIS.但是,如果我没有在vb脚本中指定完整路径,那么我很难运行文件.路径将是动态的,无法指定除"%cd%"之外的任何其他目录

我的代码:

If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")

objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
Dim intCounter, strSubkey
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft"

objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

intCounter=0
For Each subkey In arrSubKeys
If subkey="InetStp" Then
 intCounter=1 or  strSubkey=subkey
End If

Next
currentDirectory = left(WScript.ScriptFullName, Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))

if intCounter=0 then
Set WSHShell = CreateObject("Wscript.Shell")
WSHShell.Run ("\currentDirectory\noiisinstalled.exe") 
Elseif intCounter=1 …
Run Code Online (Sandbox Code Playgroud)

vb.net iis vbscript

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

Excel 2003 XML格式不能在Excel 2010 x64中自动打开

我有一个生成Excel文件的vbscript,采用旧式的Excel XML Spreadsheet 2003格式.它包含了必要的处理指令(即<?mso-application progid="Excel.Sheet"?>标签)和我的用户可以在Office 2003和Office 2007(XP系统上运行)来打开它们,通过双击该附件.

我们现在正在使用Office 2010 x64测试Windows 7 x64的桌面版本,这不再适用.这些文件只是在IE中打开并显示基础XML.如果文件保存到桌面,它仍然会在图标上显示Excel标志,但仍会在IE中打开.

这是64位问题还是Excel 2010问题?有修复吗?我认为持久性处理程序可能在注册表中丢失或错误注册,但我不知道要添加什么...

xml vbscript excel

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

在Windows 7脚本中,如何确定当前系统关闭是否实际上是重新启动?

我使用组策略编辑器,它是Windows 7(也是Windows XP)的一部分,用于运行所谓的关闭脚本,每次关闭或重新启动系统时都会自动执行该脚本.我的问题是:我需要在我的脚本中知道用户是否选择关闭系统,或者他是否选择了重启.这两个操作都会使Windows运行关闭脚本,但是如何在该脚本执行期间确定实际执行了哪个操作?

如果系统当前执行关机或重启,有没有办法知道,在关机期间?

vbscript powershell reboot shutdown windows-7

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

如何使用vbscript从文本文件中读取每20行?

我在文本文件中有180行,并且想要每20行读取一次(1-20,21-40 ......)

这是我目前的代码:

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.OpenTextFile("C:\Bess_Automation\EditFiles\TSTVLD1.txt", ForReading)

'Reading the count of lines
objTextFile.ReadAll
strLinecount=objTextFile.Line
msgbox strLinecount

strnumoftimes=Round((strLinecount/20),0)
msgbox strnumoftimes
Run Code Online (Sandbox Code Playgroud)

vbscript

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

当对象不可见时触发链接单击

我正在使用UFT 12.51在IE11上自动化基于Web的应用程序.这是我的场景:
我必须经过几页才能完成我正在尝试自动化的过程(准确地说是9页).在第4页上,我单击一个打开框架的链接(作为弹出窗口).我输入所需信息,然后单击按钮提交关闭框架的信息,并将我返回到浏览器的第4页.这是我的问题开始的地方:此时UFT停止识别页面上的任何元素.它认为有一个页面,但不知道它有任何子'可见'对象.如果我再次手动点击链接再次显示框架并关闭框架,UFT将再次开始识别页面上的对象.当链接对UFT不可见时,是否有一种方法可以触发链接点击(我有URL)再次打开Frame?如果我能做到这一点,我将能够关闭框架,页面上的对象将再次可见..希望:)

我尝试过像'devicereplay',browser.navigate,sendkeys这样的东西,但它们都没有工作.不幸的是,由于我的应用程序的性质,我无法提供任何屏幕打印.任何帮助都会非常感激,因为我现在已经试图解决这个问题2天没有运气了.


Dim oDR : Set oDR = CreateObject("Mercury.DeviceReplay")
' Lets get the X and Y chordinates for 'Next Step' button
Dim iX, iY

iX = Browser("MyBrowser").Page("MyPage").Link("NextStep").GetROProperty("x") + 5
iY = Browser("MyBrowser").Page("MyPage").Link("NextStep").GetROProperty("y") + 5

If MyFunction(dCurrVals, sErrorMsg) Then
    LOG_ReportEvent "PASS", "Set Investment/Allocate", "Successfully initialised page"
Else
    LOG_ReportEvent "FAIL", "Set Investment/Allocate", sError
End If

'Browser("MyBrowser").Page("MyPage").Object.body.doscroll "scrollbarPageUP"
wait(1)

oDR.MouseMove iX, iY
oDR.MouseClick iX, iY, 0

Set oDR = Nothing

Browser("MyBrowser").RefreshWebSupport
Wait(1)
Browser("MyBrowser").Page("MyPage").Link("Search")
'Browser("MyBrowser").Navigate "MyURL"
'Browser("MyBrowser").Page("MyPage").Sync
'Browser("MyBrowser").Page("MyPage").Link
'Wait(1)
'Browser("MyBrowser").Page("MyPage").Link("Search")
'Browser("MyBrowser").Page("MyPage").WebElement("Search").FireEvent …
Run Code Online (Sandbox Code Playgroud)

vbscript qtp hp-uft

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