我需要在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文件).没有报告错误(至少我可以告诉).为什么此脚本不能作为"卸载自定义操作"的一部分工作
我需要检查执行脚本的用户在计算机上是否具有管理特权。
我指定了执行脚本的用户,因为该脚本可能已由与登录用户不同的用户执行,而类似于“ Runas”。
@哈维尔:两种解决方案都可以在装有英文版Windows的PC上运行,但如果安装的语言不同则不能。这是因为Administrators组不存在,所以名称有所不同,例如西班牙语。我需要解决方案才能在所有配置中工作。
我需要为WinXP编写一些脚本来支持Big Financial Corp.的一些分析师.请帮我确定哪种类型的Windows脚本最适合我的需求.
我的需求看起来很简单(无论如何对我来说)
从我对我的选择的匆忙审查,看起来我的选择
我没有时间学习或深入研究这些(或者其他任何可用的标准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) .vbs中的对象以什么顺序销毁?
也就是说,给定这些全局变量:
Set x = New Xxx
Set y = New Yyy
Run Code Online (Sandbox Code Playgroud)
我对以下任何一个问题的答案感兴趣.
对于.VBS中实现的类的实例,将以什么顺序Class_Terminate调用?粗略的戳戳建议创造的顺序(而不是逆序!),但这有保证吗?
编辑:我知道Class_Terminate将在释放对象的最后一次引用时调用.我的意思是:x和y的发布顺序是什么,是否有保证?为简单起见,假设x和y是对其各自对象的唯一引用.
对象的类型是否重要?例如,如果我在.VBS中实现的类与其他COM对象混合在一起,例如Scripting.FileSystemObject.
编辑:我知道COM库可能会设置自己的内部循环引用,脚本主机引擎一无所知; 我有兴趣探索可能影响第一个问题答案的内容.
WScript.Quit?(在后一种情况下,似乎Class_Terminate在退出之前仍然会调用任何未完成的对象,但这些可能会导致报告错误).我可以凭经验找到其中一些问题的答案,但我对它们中的任何一个是否得到保证 /记录感兴趣.
即使你只知道一些答案 - 或进一步的相关问题,请发帖.
我需要通过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) 我试图看看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) 我有一个生成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问题?有修复吗?我认为持久性处理程序可能在注册表中丢失或错误注册,但我不知道要添加什么...
我使用组策略编辑器,它是Windows 7(也是Windows XP)的一部分,用于运行所谓的关闭脚本,每次关闭或重新启动系统时都会自动执行该脚本.我的问题是:我需要在我的脚本中知道用户是否选择关闭系统,或者他是否选择了重启.这两个操作都会使Windows运行关闭脚本,但是如何在该脚本执行期间确定实际执行了哪个操作?
如果系统当前执行关机或重启,有没有办法知道,在关机期间?
我在文本文件中有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) 我正在使用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 ×10
excel ×2
windows ×2
batch-file ×1
csv ×1
destructor ×1
excel-vba ×1
hp-uft ×1
iis ×1
jscript ×1
powershell ×1
privileges ×1
qtp ×1
reboot ×1
scripting ×1
shutdown ×1
vb.net ×1
vba ×1
windows-7 ×1
xml ×1