- 表示实际对象类型名
Object - 表示一般对象
Unknown - 表示未知对象类型
Nothing - 表示还未引用对象实例的对象变量
Error - 表示一个错误
TypeName(varname)
x="Hello World!"
MsgBox TypeName(x) 'String
VarType
VarType 函数返回指示指定变量的子类型的值。
VarType 函数返回下面的值:
0 = vbEmpty - 表示空(未初始化)
1 = vbNull - 表示 Null(无有效数据)
2 = vbInteger - 表示一个整数
3 = vbLong - 表示一个长整数
4 = vbSingle - 表示一个单精度浮点数
5 = vbDouble - 表示一个双精度浮点数
6 = vbCurrency - 表示货币
7 = vbDate - 表示日期
8 = vbString - 表示一个字符串
9 = vbObject - 表示一个 automation 对象
10 = vbError - 表示一个错误
11 = vbBoolean - 表示一个布尔值
12 = vbVariant - 表示 Variant(仅用于变量数组)
13 = vbDataObject - 表示一个数据访问对象
17 = vbByte - 表示一个字节
8192 = vbArray - 表示一个数组
注意: 假如变量是数组,则 VarType() 会返回 8192 + VarType(array_element)。举例:整数数组的 VarType() 会返回 8192 + 2 = 8194。
VarType(varname)
x="Hello World!"
MsgBox VarType(x) '8
GetRef
CreatObject
CreateObject 函数创建一个指定类型的对象。
CreateObject(servername.typename[,location])
参数
描述
servername
必需。提供此对象的应用程序名称。
typename
必需。对象的类型或类(type/class)。
location
可选。在何处创建对象。
'声明变量
Dim ExcelSheet
'为Excel.Application创建一个DOM对象
Set ExcelSheet = CreateObject("Excel.Application")
aRemoteSever = "127.1.1.1"
'在远程服务器上为Excel.Application创建一个COM对象
Set ExcelSheet = CreateObject("Excel.Application",sRemoteSever)
CreateObject ,这条命令可以访问windows系统内安装的所有COM对象,并且可以调用这些部件中存放的命令。
COM对象 (COM:The Component Object Model 组件对象模型 )是遵循COM规范编写以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够满足对组件架构的所有需求。简单的说,COM就是别人写好的模块,我们要做的仅仅是调用它,而不必关心它的内部实现,这也是COM技术的一个初衷。ProgID可以认为是开发人员为COM对象起的一个名字,我们把COM对象的名字传递给CreateObject函数,告诉它我们想创建这个对象,CreateObject函数就会返回这个对象的指针给你。
WSH 是“Windows Scripting Host”的缩略形式,其通用的中文译名为“Windows脚本宿主”。对于这个较为抽象的名词,我们可以先作这样一个笼统的理解:它是内嵌于 Windows 操作系统中的脚本语言工作环境。WSH的工作流程,实际上就是脚本文件被解析并执行的过程。WSH 实际上是一个脚本语言的运行环境,它之所以具备强大的功能,是在于充分挖掘了脚本语言的潜力。脚本文件的编写十分方便,你可以选用任意一个文字编辑软件进行编写,写完后,你只需将它保存为 WSH 所支持的文件名就行了(如 ..js 文件、.vbs 文件),WSH也就是用来解析VBS语言的宿主,本身包含了几个个常用对象:
Scripting.FileSystemObject>提供一整套文件系统操作函数,它允许我们在代码内操作文本文件、文件夹及驱动器。
Scripting.Dictionary>用来返回存放键值对的字典对象
Wscript.Shell一>提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS 环境变量,读取链接中的设置
Wscript.NetWork>提供网络连接和远程打印机管理的函数。(其中,所有Scripting对象都存在SCRRUNDLL文件中,所有的Wscript对象都存放在WSHOMocx文件中。)
GetObject
GetObject 函数返回对文件或已经打开应用 automation 对象的引用。
语法:GetObject([pathname][,class])
参数
描述
pathname
可选。包含 automation 对象的文件的完整路径和名称。如果此参数被忽略,就必须有 class 参数。
class
可选。automation 对象的类。此参数使用此语法:appname.objectype。
Set objSWbemServices = GetObject("winmgmts:")
参考:Microsoft Windows 2000 Scripting Guide - The "WinMgmts:" Prefix | Microsoft Docs
Win32_DiskQuota, ROOT\CIMV2
WMI中相关的操作说明execquery 或者是instancesof_weixin_33756418的博客-CSDN博客
WMI 名字对象可以由三部分组成:一个强制组件和两个可选组件。强制性组件是“winmgmts:”前缀。所有 WMI 名称都必须以“winmgmts:”开头。
指定仅包含“winmgmts:”前缀的名字对象是您可以使用的 WMI 名字对象的最基本形式。结果始终是对 SWbemServices 对象的引用,该对象表示与本地计算机上的 Windows Management Instrumentation 服务的连接。
Set objSWbemServices = GetObject("winmgmts:") Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_LogicalDisk")
或写成:
Set colSWbemObjectSet = GetObject("winmgmts:").InstancesOf("Win32_LogicalDisk")
6.循环语句
6.1 For...Next 语句
运行一段代码指定的次数(用的较多)
For 语句规定计数变量(i )以及它的初始值和结束值。Next 语句会以 1 作为步进值来递增变量(i )。
通过 Step 关键词,您可以规定计数变量递增或递减的步进值。
退出 For...Next
您可以通过 Exit For 关键词退出 For...Next 语句。
For i=1 To 10 If i=5 Then Exit For some code Next
6.2 For Each...Next 语句
针对集合中的每个项目或者数组中的每个元素来运行某段代码。
Dim cars(2)
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x In cars
Msgbox(x)
Next
结果: Volve Saab BMW
For i In 和 For Each i In 对比
1.浏览器的兼容性区别
2.for each遍历的是每一项value,for in 遍历的是每一项的key值
6.3 Do...Loop 语句
运行循环,当条件为 true 或者直到条件为 true 时
您可以使用 While 关键字来检查 Do... Loop 语句的条件。
Do While i>10 some code Loop
如果 i 等于 9,上述循环内的代码将终止执行。
Do some code Loop While i>10
重复执行代码直到条件变成 true
您可以使用 Until 关键字来检查 Do...Loop 语句的条件。
Do Until i=10 some code Loop
如果 i 等于 10,上述循环内的代码将终止执行。
Do some code Loop Until i=10
这个循环内的代码将被执行至少一次,即使 i 等于 10。
退出 Do...Loop
您可以通过 Exit Do 关键词退出 Do...Loop 语句。
Do Until i=10 i=i-1 If i<10 Then Exit Do Loop
7.条件语句
7.1If 语句
假如您希望在条件为 true 时执行一系列的代码,可以使用这个语句
it true
do something
7.2 If...Then...Else 语句
i=hour(time) If i < 10 Then document.write("Good morning!") Else document.write("Have a nice day!") End If
7.3 If...Then...ElseIf 语句
i=hour(time) If i = 10 Then document.write("Just started...!") ElseIf i = 11 Then document.write("Hungry!") ElseIf i = 12 Then document.write("Ah, lunch-time!") ElseIf i = 16 Then document.write("Time to go home!") Else document.write("Unknown") End If
7.4 Select Case 语句
d=weekday(date) Select Case d Case 1 document.write("Sleepy Sunday") Case 2 document.write("Monday again!") Case 3 document.write("Just Tuesday!") Case 4 document.write("Wednesday!") Case 5 document.write("Thursday...") Case 6 document.write("Finally Friday!") Case else document.write("Super Saturday!!!!") End Select
8.数组
8.1定长数组
Dim username(2)
Dim arraybound,arraycount
Dim i
username(0)="zhangsan"
username(1)="lisi"
username(2)="wangwu"
arraybound=UBound(username)
arraycount=arraybound+1
For i = 0 To arraybound
MsgBox username(i)
Next
MsgBox arraybound
MsgBox arraycount
LBound() 返回数组的最小可用下标
UBound() 返回数组的最大可用下标
代码也可以改成:
For i = LBound(i) to UBound(i)
MsgBox username(i)
8.2动态数组
我们可以用ReDim重新定义动态数组的大小,但是每次这样做的话,数组中的值就会销毁。
除非我们像下面这样使用关键字“preserve”
'创建动态数组
Dim X()
'在使用数组之前,数组必须被初始化
Re Dim X(2)
X(0) = "This"
X(1) = "is a"
X(2) = "test"
'重定义数组,保留了前3个元素的值
ReDim Preserve X(5)
9.函数封装
原来的代码
tips:vbCrLf是vbs中的一个字符串常数,即“Chr(13) & Chr(10)”(回车符与换行符连接在一起),是换行的意思。
Dim opera,operb,result
MsgBox "+.加法功能"&vbCrLf&"-.减法功能"
oper = InputBox("请选择功能")
opera = InputBox("a")
operb = InputBox("b")
Select Case oper
Case "+"
result = CInt(opera) + CInt(operb)
msgbox result
Case "-"
result = CInt(opera) - CInt(operb)
msgbox result
Case Else MsgBox "输入错误"
End Select
Function和sub
Function有返回值
Sub没有返回值
Function有返回值,因为vbs没有return语句,所以Function会返回和函数名同名的变量的值
Function addtest(testa,testb)
addtest = CInt(testa) + CInt(testb)
End Function
MsgBox addtest("1",2)
结果:
如果再加一个其他变量
Function addtest(testa,testb)
test = CInt(testa) - CInt(testb)
addtest = CInt(testa) + CInt(testb)
End Function
MsgBox addtest("8",2)
结果:
改造:
oper = InputBox("请选择功能")
opera = InputBox("a")
operb = InputBox("b")
Select Case oper
Case "+" MsgBox addtest(opera,operb)
Case "-" subtraction opera,operb
Case Else MsgBox "输入错误"
End Select
'function
Function addtest(testa,testb)
addtest = CInt(testa) + CInt(testb)
End Function
'sub
Sub subtraction(testa,testb)
result = CInt(testa) - CInt(testb)
'sub函数没有返回值
MsgBox result
End sub
call
Call 语句
将控制权传递给 Sub 或 Function 过程。
[Call ] name [argumentlist]
可选项关键字。如果指定此关键字,则必须用括号 把 argumentlist 括起来。例如:
Call MyFunction("Hello World")
Function MyFunction(text)
MsgBox text
End Function
Call MySub("Hello World")
Function MySub(text)
MsgBox text
End Function
10.fso(Scripting.FileSystemObject)
FileSystemObject对象
参考:VBS中FileSystemObject对象详解_花蝴蝶的专栏-CSDN博客
FileSystemObject 对象的作用:提供对计算机文件系统的访问,它允许我们在代码内操作文本文件、文件夹及驱动器。
FSO包含的常见对象有:
对象/集合
描述
Drive
包含储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器
Drives
提供一个物理和逻辑驱动器的列表
File
检查和处理文件
Files
提供包含在文件夹内的所有文件的列表
Folder
检查和处理文件夹
Folders
提供在 Folder 内的所有文件夹的列表
TextStream
对象,用来读写文本文件
FileSystemObject对象总共一个属性即Drives
描述:获得所有可用驱动器的集合。
说明:无论是否本地磁盘、插入媒体、可移动媒体驱动器都显示在 Drives 集合中。
具体示例代码如下所示:获取本计算机上所有的磁盘的盘符
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set Drivers = fso.Drives
For Each Driver in Drivers
Msgbox Driver.DriveLetter '输出计算机上所有的磁盘盘符
Next
10.1 folder
CreateFolder
FSO 是FileSystemObject 或 Scripting.FileSystemObject 的缩写,为 IIS 内置组件,用于操作磁盘、文件夹或文本文件。
描述:创建一个空的文件夹
语法:object. CreateFolder(strFolder)
参数:strFolder为想要创建的文件夹路径及名称
Dim fso
'创建一个文件系统对象
Set fso = CreateObject("Scripting.FileSystemObject")
'在D:\learning\vbs下创建一个文件夹
Set f = fso.CreateFolder("D:\learning\vbs\1")
'把fso对象所占用的内存释放掉
Set fso = Nothing
结果:生成文件夹:1
改造使其更通用 :
其中:FolderExist
描述:判断指定文件夹是否存在
语法:object. FolderExists (strFolder)
参数:strFolder为指定的文件夹
Sub createfolder(folderpath,foldname)
Dim fso
'创建一个文件系统对象
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(folderpath&foldname)Then
MsgBox ("文件夹已存在")
Else
MsgBox "文件夹不存在,现在开始创建"
'在D:\learning\vbs下创建一个文件夹
Set f = fso.CreateFolder(folderpath&foldname)
End If
'把fso对象所占用的内存释放掉
Set fso = Nothing
End Sub
'调用
createfolder "D:\learning\vbs\","2"
DeleteFolder
删除一个文件夹 语法:object. DeleteFolder(strFolder,force) 参数:strFolder为想要删除的文件夹名称。组成部分中可用通配符。 force如果要删除只读文件夹,则该值为 True;否则为 False(默认) 示例:删除文件夹: c:\test
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用DeleteFile删除指定文件
Fso.DeleteFolder("c:\test")
'强制删除只读的文件
Fso.DeleteFolder "c:\test",True
CopyFolder
描述:将文件夹从某位置复制到另一位置
语法:object. CopyFolder "source", "destination"[, overwrite]
参数:source必选项。表示指定文件夹的路径。组成部分中可用通配符。 destination必选项。表示目标位置的路径 overwrite可选项。Boolean 值表明是否覆盖现有文件夹。如果是 True,则覆盖文件夹;如果是 False,则不覆盖现有文件夹。默认值是 True
示例:将 c:\test文件夹复制到D:\下
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用CopyFile复制文件到另一个位置,默认为True覆盖已存在文件
Fso.CopyFolder "c:\test","D:\"
'False不覆盖已存在文件
Fso.CopyFolder "c:\test","D:\",False
MoveFolder
描述:将一个或多个文件夹从某位置移动到另一位置 语法:object.MoveFolder source, destination 参数:source必选项。要移动的文件夹的路径。组成部分中可用通配符。 destination必选项。指定路径,表示要将文件夹移动到该目标位置。
示例:
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFolder移动文件夹到另一个位置
Fso.MoveFolder "c:\test","D:\"
GetParentFolderName
描述:获取文件当前所在的文件夹 语法:object.GetParentFolderName Path 参数:Path必选项。文件路径名。 示例:获取”c:\test.txt”文件所在的文件夹
Dim Fso
Dim GetParentFolderName
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用GetParentFolderName获取文件当前所在的文件夹
GetParentFolderName = Fso.GetParentFolderName("c:\test\test.txt")
MsgBox GetParentFolderName '输出c:\test
GetBaseName 方法
返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 语法:object.GetBaseName(path) 参数 object:必选项,应为 FileSystemObject 的名称。 path:必选项。指定文件或文件夹的路径,要返回其组成部分的基本名。 如果路径中没有任何文件或文件夹与指定的 path 参数匹配,则 GetBaseName 方法返回零长度字符串 ("")。
Function GetTheBase(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
GetTheBase = fso.GetBaseName(filespec)
MsgBox GetTheBase
End Function
GetTheBase("D:\learning\vbs\oabookat\testcase")
结果:
10.2 file
关于 TextStream 对象
TextStream对象是用于访问文本文件的对象,它是FileSystemObject一个独立的附属对象,但在使用TextStream对象时,我们仍要借助FileSystemObject 对象或其附属对象来创一个TextStream 对象并访问磁盘文件的内容。可以通过FileSystemObject 对象的CreateTextFile()及OpenTextFile(),来获取TextStream的对象句柄。
TextStream对象的方法:
方法
说明
Close()
关闭一个打开的文件
Read(numchars)
从文件中读出 numchars 个字符
ReadAll()
作为单个字符串读出整个文件
ReadLine()
作为一个字符串从文件中读出一行(直到回车符和换行)
Skip(numchars)
当从文件读出时忽略 numchars 个字符
SkipLine()
当从文件读出时忽略下一行
Write(string)
向文件写入字符串 string
WriteLine(string)
向文件写入字符串 string(可选)和换行符
WriteBlankLines(n)
向文件写入 n 个换行符
TextStream对象的属性:
属性
说明
AtEndOfLine
如果文件位置指针在文件中一行的末尾则返回 True
AtEndOfStream
如果文件位置指针在文件的末尾则返回 True
Column
从 1 开始返回文件中当前字符的列号
Line
从 1 开始返回文件中当前行的行号”
CreateFile
用指定的文件名 filename 在磁盘上创建一个新的文本文件,并返回与其对应的 TextStream 对象
语法:object. CreateTextFile(filename,blnOverWrite,unicode)
参数
描述
filename
文件名称
blnOverWrite
可选项,Ture强制覆盖,为False不覆盖
unicode
可选项,如果以 Unicode 文件格式创建文件,则该值为 True ;如果以 ASCII 文件格式创建文件,则该值为 False 。如果省略此部分,则假定创建 ASCII 文件。
Option Explicit
Dim fso,f
'Create file
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("D:\learning\vbs\1\testfile.txt", True)
OpenTextFile
OpenTextFile(filename[, iomode[, create[, format]]])
打开一个指定的文件并返回一个 TextStream 对象,该对象可用于对文件进行读、写、追加操作。
CreateTextFile 和OpenTextFile属于同一等级的函数,不要以为应该是先CreateTextFile以后就应该调用OpenTextFile,并不是这样的,完全可以通过OpenTextFile中的第三个属性(true)来新建一个文件并写入。
参数
描述
filename
文件名称
iomode
iForReading 1 打开一个只读文件,不能对此文件进行写操作。 ForWriting 2 打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容。 ForAppending 8 打开一个文件并写到文件的尾部。
create
可选,它表示如果指定的 filename 不存在是否可以创建一个新文件。如果创建新文件,其值为 True。若不创建文件其值为 False。缺省值为 False。
Format
TristateUseDefault –2 使用系统缺省打开文件。 TristateTrue –1 以 Unicode 格式打开文件。 TristateFalse 0 以 ASCII 格式打开文件。
Option Explicit
Dim fso,f
'创建常量
Const ForReading = 1,ForWritting = 2,ForAppending = 8
'Create file
Set fso = CreateObject("Scripting.FileSystemObject")
'Set f = fso.CreateTextFile("D:\learning\vbs\1\testfile.txt", True)
'Open file
Set f = fso.OpenTextFile("D:\learning\vbs\1\testfile.txt",ForAppending,False)
f.WriteLine("Hello")
f.Close
Set fso = nothing
封装函数使其更通用:
Option Explicit
Sub writelog(filepath,logstr)
Dim fso,f
'创建常量
Const ForReading = 1,ForWritting = 2,ForAppending = 8
'Create file
Set fso = CreateObject("Scripting.FileSystemObject")
'Set f = fso.CreateTextFile(filepath, True)
'Open file
Set f = fso.OpenTextFile(filepath,ForAppending,False)
f.WriteLine logstr
f.Close
Set fso = Nothing
End Sub
'Now() 返回当前的日期和时间
writelog "D:\learning\vbs\1\testfile.txt",Now() &"---执行自动化测试"
结果:
DeleteFile
描述:删除一个文件 语法:object. DeleteFile (strFile,force) 参数:strFile为想要删除的文件。组成部分中可用通配符。 force如果要删除只读文件,则该值为 True;否则为 False(默认)
示例:删除文件: c:\test.txt
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用DeleteFile删除指定文件
Fso.DeleteFile("c:\test.txt")
'强制删除只读的文件
Fso.DeleteFile "c:\test.txt",True
CopyFile
描述:将一个或多个文件从某位置复制到另一位置 语法:object.CopyFile "source", "destination"[, overwrite] 参数:source必选项。表示指定文件的路径。组成部分中可用通配符。 destination必选项。表示目标位置路径 overwrite可选项。Boolean 值表明是否覆盖现有文件。如果是 True,则覆盖文件;如果是 False,则不覆盖现有文件。默认值是 True 示例:将 c:\test.txt文件复制到D:\下
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用CopyFile复制文件到另一个位置,False不覆盖已存在文件
Fso.CopyFile "c:\test.txt","D:\",False
'True覆盖已存在文件
Fso.CopyFile "c:\test.txt","D:\",True
示例:将 c:\下所有的txt文件复制到D:\下
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用*.txt,可以同时将多个文件复制到另一个位置,False不覆盖已存在文件
Fso.CopyFile "c:\*.txt","D:\",False
'True表示覆盖已存在文件
Fso.CopyFile "c:\*.txt","D:\",True
MoveFile
描述:将一个或多个文件从某位置移动到另一位置 语法:object.MoveFile source, destination 参数:source必选项。要移动的文件的路径。组成部分中可用通配符。 destination必选项。指定路径,表示要将文件移动到该目标位置。 destination 参数不能包含通配符。 示例:将 c:\test文件夹移动到D:\下
Dim Fso
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFile移动文件到另一个位置
Fso.MoveFile "c:\test.txt","D:\"
GetBaseName
描述:获取文件当前所在文件夹 语法:object.GetBaseName Path 参数:Path必选项。文件路径名。 示例:获取”c:\test.txt”文件名称
Dim Fso
Dim GetBaseName
'创建FileSystemObject对象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用GetBaseName获取文件的文件名称
GetBaseName = Fso.GetBaseName("c:\test\test.txt")
MsgBox GetBaseName '输出test
11.excel新建
像多数office产品一样,Excel通过其COM接口提供自动化操作方法。
Excel对象模型:
11.1新建、保存、退出Excel工作表:
Dim exlapp,exlworkbook,exlworksheet
'创建Excel对象实例
Set exlapp = CreateObject("Excel.application")
'新增一个工作簿,Add方法返回对它的引用,可以用来操作工作簿
Set exlworkbook = exlapp.Workbooks.Add
'新增一个工作表,Add方法返回对新增工作表的对象引用
Set exlworksheet = exlworkbook.Worksheets.Add
'更新A1单元格的内容
exlworksheet.Cells(1,1) = "Hello,Test"'也可写成 exlworksheet.Cells(1,"A") = "Hello,Test"
'保存新建工作表,这里使用SaveAs方法,因为此工作簿从未被保存过;如果原来存在,则使用Save方法
exlworkbook.SaveAs "D:\learning\vbs\1\testexcel.xls"
'关闭工作簿
exlworkbook.Close
'关闭之前打开的Excel实例,结束进程
exlapp.Quit
'最后销毁所有对象引用
Set exlapp = Nothing
Set exlworkbook = Nothing
Set exlworksheet = Nothing
结果:
11.2 excel与fso对象判断Excel是否存在
创建前判断Excel是否存在,需要用到FileSystemObject对象来查看文件是否存在
Dim exlapp,exlworkbook,exlworksheet
Dim fso,exlexist,sSourceFile
'源文件
sSourceFile = "D:\learning\vbs\1\test1.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
Set exlapp = CreateObject("Excel.application")
'判断文件是否存在
exlexist = fso.FileExists(sSourceFile)
If exlexist Then
'如果文件存在,则打开此文件
Set exlworkbook = exlapp.Workbooks.Open(sSourceFile)
Else
'如果文件不存在,则新建
Set exlworkbook = exlapp.Workbooks.Add
End If
'新增一个工作表,Add方法返回对新增工作表的对象引用
Set exlworksheet = exlworkbook.Worksheets.Add
'更新A1单元格的内容
exlworksheet.Cells(1,1) = "Hello,Test"'也可写成 exlworksheet.Cells(1,"A") = "Hello,Test"
If exlexist Then
'保存新建工作表,如果原来存在,则使用Save方法
exlworkbook.Save
'保存新建工作表,如果从未被保存过,则使用SaveAs方法
Else
exlworkbook.SaveAs sSourceFile
End If
'关闭工作簿
exlworkbook.Close
'关闭之前打开的Excel实例,结束进程
exlapp.Quit
'最后销毁所有对象引用
Set exlapp = Nothing
Set exlworkbook = Nothing
Set exlworksheet = Nothing
结果:
11.3使用EXCEL作为UFT的输出数据表
CompareMode 属性 - VBScript 用户指南 - 文江博客 (wenjiangs.com)
object .CompareMode [ = compare]
参数:
object:必选项。Dictionary 对象的名称;
compare:可选项。如果提供此参数,compare 参数为数值,表示由函数如 StrComp 使用的比较模式。
compare 参数设置如下:
Constant
Value
Description
vbBinaryCompare
0
执行二进制比较.
vbTextCompare
1
执行文本比较.
12.UFT对象导入导出
UFT中,有时候会出现多个模块 存在一样的对象情况,这时候就可以将对象导出到本地,作为公共对象以供调用,这样做的好处就是可以节约资源。步骤如下:
对象导出:
1、从Object Repository ->选择“文件夹”->“导出本地对象”,并删掉该对象库中的所有对象->将 被导出的“对象文件”保存到本地;
对象导入:
2、在UFT脚本编辑器中,使用repositoriescollection.RemoveAll 语句删掉所有残余对象;
3、在UFT脚本编辑器中,使用repositoriescollection.Add"公共对象文件路径",如 repositoriescollection.Add"c:\testtsr.tsr",特地说明,对象库文件是以tsr为后缀名的。
13.UFT自动化对象模型
AOM(Automation Object Model )
目的:用编程的方法控制测试用例的执行。
UFT与VbsEdit怎么联系到一起?
在VbsEdit里面打开Tools-Reference,点击Add,选择TypeLib,找到UFT安装目录下的bin-QTObjectModel.dll文件打开;
选择Prog ID,输入选择Quick Test.Application
举例:在Vbs.Edit里面编程使用AOM的方式来控制执行QTP/UFT脚本
Dim qtapp
'创建qtp对象
Set qtapp = CreateObject("quicktest.application")
qtapp.lunch '启动QTP
qtapp.Visuable = True '使UFT应用可见
'打开QTP/UFT脚本所在的路径
qtapp.open "C:\GUITest1"
qtapp.Test.Run '运行脚本
qtapp.Test.Close '关闭脚本
qtapp.quit '退出qtapp对象
Set qtapp = Nothing '释放资源
14.其他
Execute
用来动态执行任何定义在字符串内的内容。
Execute [statement] 在局部范围执行
Dim x
Execute "x=2"
MsgBox x
结果:2
ExecuteGlobal 在全局范围执行
在VBScript中,可以用ExecuteGlobal语句来在一个脚本文件中加载另外一个脚本的函数,例如,假设需要加载的是脚本Test.vbs: Function Test1 Msgbox "Test1" End Function
那么可以在脚本ExecuteGlobal.vbs中按下面的方式加载并调用Test1函数: Set fso = CreateObject("Scripting.FilesyStemObject") Str = fso.OpenTextFile("Test.vbs", 1).ReadAll ExecuteGlobal Str Set fso = Nothing
UFT:
Eval
Eval函数用来判断一个语句
Exit
Exit 语句的语法有以下几种形式:
语句
描述
Exit Do
提供一种退出 Do...Loop 语句的方法。只能在 Do...Loop 语句中使用。Exit Do 将控制权转移到 Loop 语句之后的语句。在嵌套的 Do...Loop 语句中使用时,Exit Do 将控制权转移到循环所在位置的上一层嵌套循环。
Exit For
提供一种退出 For 循环的方法。只能在 For...Next 或 For Each...Next 循环中使用。Exit For 将控制权转移到 Next 之后的语句。在嵌套的 For 循环中使用时,Exit For 将控制权转移到循环所在位置的上一层嵌套循环。
Exit Function
立即从出现的位置退出 Function 过程。继续执行调用 Function 的语句后面的语句。
Exit Property
立即从所在的 Property 过程中退出。继续执行下面调用 Property 过程的语句。
Exit Sub
立即从出现的位置退出 Sub 过程,继续执行调用 Sub 的语句后面的语句。
你可能感兴趣的:(UFT,vbs,qtp)
Android自动化测试初探
zgy19851028
Android 软件测试 Socket VBScript 编程
基于UIAutomation的自动化测试框架收藏§第一部分:前言自动化测试或许是众多测试同行都在研究或准备研究的领域。结合自己的能力和公司的状况,选择合适的自动化工具、搭建正确而又高效的框架或许是个永远讨论不完的话题,正如应了那句话,没有最好,只有更好。个人所在的公司当前开展的很多项目都是基于Win7和WPF开发的,之前想尝试用QTP对之进行录制和回放操作,不幸的是,需要额外的WPF插件支持;另外
网络安全:攻击和防御练习(全战课), DDos压力测试
网安-轩逸
web安全 ddos okhttp
XSS跨站脚本攻击:Cross-sitescripting(简称xss)跨站脚本。一种网站的安全漏洞的攻击,代码注入攻击的一种。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。
autojs遍历当前页面所有控件_Qt编写控件属性设计器5-属性中文
weixin_39929715
一、前言在上一篇文章中就提到过,使用qtpropertybrowser来加载属性,对应加载到的属性是英文的,也就是控件类中Q_PROPERTY描述的变量名称,如何变成中文或者其他语言显示呢?这个就需要研究qtpropertybrowser的源码了,通过研究发现,在QtObjectControllerPrivate类中负责对控件的属性名称进行遍历,然后发送到QtVariantPropertyMana
Linux系统关于Qt platform plugin “xcb“缺失的解决
chase。
Bug调试 linux qt debian
之前在Debian10.0系统中安装图形库(如QT)相关时出现xcb缺失、xinerama缺失的问题。qt.qpa.plugin:CouldnotloadtheQtplatformplugin"xcb"in""eventhoughitwasfound.libxcb-xinerama.so.0:cannotopensharedobjectfile:Nosuchfileordirectory在~/.b
ffmpeg拉流rtmp保存h264和aac
农民工-IT
ffmpeg源码解析 ffmpeg aac
代码实现#include#include#includeextern"C"{#include#include}intmp4toannexb(AVBSFContext*bsf_ctx,AVPacket*pkt,std::ofstream&out){intret;ret=av_bsf_send_packet(bsf_ctx,pkt);if(retdata,pkt->size);}return0;}in
Selenium使用指南
程序员杰哥
selenium 测试工具 python 测试用例 职场和发展 程序人生 功能测试
概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireFox,IE,safari,opera等支持多语言,包括Java,C,python,c#等主流
Python爬虫-猫眼电影的影院数据
写python的鑫哥
爬虫案例1000讲 python 爬虫 猫眼 电影 电影院 数据 采集
前言本文是该专栏的第46篇,后面会持续分享python爬虫干货知识,记得关注。本文笔者以猫眼电影为例子,获取猫眼的影院相关数据。废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)正文地址:aHR0cHM6Ly93d3cubWFveWFuLmNvbS8=目标:获取猫眼电影的影院数据1.项目场景介绍老规矩,我们还是通过接码
labelme汉化以及打包为.exe
xxbghh
python 开发语言 后端
刚接触python,记录一下自己的安装过程以及遇到的问题。一,安装labelme下载anaconda一直点击下一步安装,安装完成后在开始菜单找到AnacondaPrompt(anaconda3)并打开,运行下列代码condacreate-nlabelme_py27python=2.7condaactivatelabelme_py27condainstallpyqtpipinstalllabelme
win11 labelme 汉化菜单
不喝可乐_
python 开发语言
替换app.py,再重启#labelme汉化菜单#-*-coding:utf-8-*-importfunctoolsimportosimportos.pathasospimportreimportwebbrowserimportimgvizfromqtpyimportQtCorefromqtpy.QtCoreimportQtfromqtpyimportQtGuifromqtpyimportQtWi
powershell Get-Content
计算机辅助工程
windows powershell
Get-Content命令是PowerShell中用于读取文件内容的基本命令,主要用于获取指定路径下文件的内容。基本用法和功能Get-Content命令的主要作用是获取路径指定位置的项(如文本文件)的内容。对于文件,内容一次读取一行,并返回对象的集合,每个对象表示一行内容。支持的格式包括文本文件(如.txt)、脚本文件(如.bat、.ps1、.vbs、.sh等)、配置文件(如.yml、.xml
yolov5 pt->onnx->om yolov5模型转onnx转om模型转换
qq_43650438
笔记 深度学习 tensorflow 人工智能
yolov5pt->onnx->omyolov5-6.1版本models/yolo.pyDetect函数修改classDetect(nn.Module):defforward(self,x):z=[]#inferenceoutputforiinrange(self.nl):x[i]=self.m[i](x[i])#convbs,_,ny,nx=x[i].shape#x(bs,255,20,20)t
C#、ASP、ASP.NET、.NET、ASP.NET CORE区别、ASP.NET Core其概念和特点、ASP.NET Core个人心得体会
手中的风筝664
c# asp.net .net
C#是一种面向对象的编程语言,主要用于开发跨平台的应用程序。它是.NET框架的一部分,并且可以在.NET平台上运行。ASP(ActiveServerPages)是一种用于构建动态Web页面的技术,使用VBScript或JScript作为服务器端脚本语言。它是早期的Microsoft技术,现已逐渐过时。ASP.NET是微软推出的下一代Web应用程序开发技术,它提供了更强大、更高效的功能和工具。ASP
使用conda update python将python3.6更新到python3.7版本出现bug:
苹果酱0567
面试题汇总与解析 课程设计 spring boot layui 毕业设计 java
使用condaupdatepython将python3.6更新到python3.7版本出现bug:1)anacondanavigator无法打开,2)Jupyternotbook一直显示无法连接服务器解决办法:Anacondaprompt下操作:>condaupdate--lla>anaconda-navigator--resetqtpy.PythonQtError:NoQtbindingscou
常见问题This application failed to start because not Qt platform plugin could be initialized.
季截
qt qt 开发语言
ThisapplicationfailedtostartbecausenotQtplatformplugincouldbeinitialized.Reinstallingtheapplicationmayfixthisproblem.从qt安装目录将依赖dll和plugins下的文件夹放在可执行程序目录下
python 用matplotlib作图,报错not Qt platform plugin could be initialized
aLagrange
python bug
重装Pycharm后,用matplotlib画图ThisapplicationfailedtostartbecausenotQtplatformplugincouldbeinitialized.##标题背景:重新安装pycharm后使用matplotlib画图弹出错误窗口全程又没有调用过Pyside2或pyqt5.新建了一个Project,导入matplolib,运行一个最简单的程序importm
RK3568中使用QT opencv(显示基础图像)
花落已飘
qt opencv 开发语言
文章目录一、查看对应的开发环境是否有opencv的库二、QT使用opencv一、查看对应的开发环境是否有opencv的库在开发板中的/usr/lib目录下查看是否有opencv的库:这里使用的是正点原子的ubuntu虚拟机,在他的虚拟机里面已经安装好了opencv的库。二、QT使用opencv在QTpro文件中添加opencv的支持:QT+=coreguiCONFIG+=c++11#添加OpenC
Could not load the Qt platform plugin “xcb“ in
baobei0112
qt 开发语言 linux
在Linux上用Vscode调试MAPPO代码时碰到“CouldnotloadtheQtplatformplugin“xcb”in…”问题,问题详细描述如下:qt.qpa.plugin:CouldnotloadtheQtplatformplugin"xcb"in"/home/cloris/anaconda3/envs/py37/lib/python3.7/site-packages/cv2/qt/
[Qt Error] Could not load the Qt platform plugin “xcb“ in “ “ even though it was found.
TechBoL
qt 开发语言
python运行时报错qt.qpa.plugin:CouldnotloadtheQtplatformplugin"xcb"in""eventhoughitwasfound.ThisapplicationfailedtostartbecausenoQtplatformplugincouldbeinitialized.Reinstallingtheapplicationmayfixthisproble
bat快速设置Windows锁屏时间
夜语醉星辰
bat windows 运维
快速设置Windows的锁屏时间。@echoofftitleWindows定时锁定管理器modeconcols=80lines=30%1%2ver|find"5.">nul&&goto:Adminmshtavbscript:createobject("shell.application").shellexecute("%~s0","goto:Admin","","runas",1)(window.
bat弹出提示对话框
摸金校尉-马
服务器
::多种提示框样式自己按需选择mshtavbscript:msgbox("提示内容1",1,"提示窗口1")(window.close)mshtavbscript:msgbox("提示内容2",2,"提示窗口2")(window.close)mshtavbscript:msgbox("提示内容3",3,"提示窗口3")(window.close)mshtavbscript:msgbox("提示内容
Qt 项目架构设计
追心嵌入式
qt 开发语言
在开发一个Qt项目时,合理的文件夹结构和清晰的构建流程是非常重要的。Qt项目通常需要管理源代码、UI文件、资源文件、构建脚本等。下面我会给出一个详细的文件夹结构示例,并解释每个部分的作用及如何设计Makefile或使用Qt的qmake来自动化构建过程。Qt项目的文件夹结构以下是一个常见的Qt项目文件夹结构示例:makefileMyQtProject/│├──src/#源代码│├──main.cpp
探秘Xss:原理、类型与防范全解析
咕德猫宁丶
网络 xss java
一、Xss究竟是什么?(一)Xss的定义简述Xss全称是跨站脚本攻击(CrossSiteScripting),为了不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将其缩写为Xss。它是一种常见的网络安全漏洞,指的是攻击者利用网站对用户输入内容校验不严格等漏洞,将恶意脚本(通常是JavaScript,也可以是Java、VBScript、ActiveX、Flash等)注
Antivirus Scanner VBS +
vliu612
java linux 算法
'AVScanner.vbs'AdetailedantivirusscannerusingVBScript'Author:VictorLiu'Date:2024-07-03OptionExplicit'ConstantsConstForReading=1ConstForAppending=8ConstVirusSignatureFile="virus_signatures.txt"ConstLog
VBS恶搞病毒,慎用
vliu612
整人
1.逼用户叫爸爸,不叫就加密所有.docx文件SetobjShell=CreateObject("WScript.Shell")SetobjFSO=CreateObject("Scripting.FileSystemObject")'弹出输入框strInput=InputBox("请输入'爸爸'否则后果自负!","叫爸爸")IfstrInput="爸爸"Then'解除注册表限制(示例:禁用UAC)
网络学习记录4
Tic..
网络知识专栏 网络
二、学习网络安全知识:1、常见的网络攻击:①口令入侵:攻击者使用某些合法用户的帐号和口令登录到目的主机,然后再实施攻击活动。这种方法的前提是必须先得到该主机上的某个合法用户的帐号,然后再进行合法用户口令的破译。②跨站脚本攻击(XSS):主要采用脚本语言设计的计算机病毒,现在流行的脚本病毒大都是利用JavaScript和VBScript脚本语言编写。攻击者通过在网页中插入恶意脚本,当用户浏览该网页时
DVBS 卫星波段 设置
晨春计
TV Android TV android
目录背景DVBS介绍LNB(LowNoiseBlock)LNBC(LowNoiseBlockController)Tuner接收频率范围卫星波段范围卫星波段降频Ku波段降频C波段降频码流机和DVBS菜单设置背景不经常使用DVBS频率设置,容易忘记,整理如下。DVBS介绍在DVBS/S2信号通过同轴线进入电视/机顶盒的同时,LNBC会通过同轴线向外输出0/22K,13V/18V等信号,以控制LNB的
QT-Could not load the Qt platform plugin “xcb“ in xxx even though it was found.解决
QuanHaHQuan
Bug Free qt python opencv linux
QT-CouldnotloadtheQtplatformplugin''xcb"inxxxeventhoughitwasfound.解决文章目录1.杂话2.问题3.解决3.1查找系统默认的Qt插件路径3.2设置环境变量QT_PLUGIN_PATH3.2.1自动设置环境变量3.3检查QT库是否正确加载3.4后续3.4.1删除或重命名OpenCV自带的Qt插件目录3.4.2检查其他Qt环境变量1.杂话
软件测试之Selenium 使用指南
测试老哥
selenium 测试工具 python 软件测试 自动化测试 职场和发展 单元测试
视频学习:文末有免费的配套视频可观看点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快Selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireF
C++ | Leetcode C++题解之第393题UFT-8编码验证
Ddddddd_158
经验分享 C++ Leetcode 题解
题目:题解:classSolution{public:staticconstintMASK1=14){return-1;}mask>>=1;}returnn>=2?n:-1;}boolvalidUtf8(vector&data){intm=data.size();intindex=0;while(indexm){returnfalse;}for(inti=1;i
Web安全之XSS跨站脚本攻击
Shadow_143
web安全 安全 渗透测试
1.XSS漏洞简介XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。2.XSS
mongodb3.03开启认证
21jhf
mongodb
下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略)
Windows下我做了一个bat文件,用来启动mongodb,命令行如下:
mongod --dbpath db\data --port 27017 --directoryperdb --logp
【Spark103】Task not serializable
bit1129
Serializable
Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法
1.
package spark.exampl
你所熟知的 LRU(最近最少使用)
dalan_123
java
关于LRU这个名词在很多地方或听说,或使用,接下来看下lru缓存回收的实现
1、大体的想法
a、查询出最近最晚使用的项
b、给最近的使用的项做标记
通过使用链表就可以完成这两个操作,关于最近最少使用的项只需要返回链表的尾部;标记最近使用的项,只需要将该项移除并放置到头部,那么难点就出现 你如何能够快速在链表定位对应的该项?
这时候多
Javascript 跨域
周凡杨
JavaScript jsonp 跨域 cross-domain
linux下安装apache服务器
g21121
apache
安装apache
下载windows版本apache,下载地址:http://httpd.apache.org/download.cgi
1.windows下安装apache
Windows下安装apache比较简单,注意选择路径和端口即可,这里就不再赘述了。 2.linux下安装apache:
下载之后上传到linux的相关目录,这里指定为/home/apach
FineReport的JS编辑框和URL地址栏语法简介
老A不折腾
finereport web报表 报表软件 语法总结
JS编辑框:
1.FineReport的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FineReport中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的fun
根据STATUS信息对MySQL进行优化
墙头上一根草
status
mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为:
show processlist 命令
mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab
我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名
aijuans
Spring 3
本文介绍如何给Spring的Bean配置文件的Bean定义别名?
原始的
<bean id="business" class="onlyfun.caterpillar.device.Business">
<property name="writer">
<ref b
高性能mysql 之 性能剖析
annan211
性能 mysql mysql 性能剖析 剖析
1 定义性能优化
mysql服务器性能,此处定义为 响应时间。
在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。
这是一个陷阱。
资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现
编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不
主外键和索引唯一性约束
百合不是茶
索引 唯一性约束 主外键约束 联机删除
目标;第一步;创建两张表 用户表和文章表
第二步;发表文章
1,建表;
---用户表 BlogUsers
--userID唯一的
--userName
--pwd
--sex
create
线程的调度
bijian1013
java 多线程 thread 线程的调度 java多线程
1. Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。
2. 多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商)
a)
查看日志常用命令
bijian1013
linux 命令 unix
一.日志查找方法,可以用通配符查某台主机上的所有服务器grep "关键字" /wls/applogs/custom-*/error.log
二.查看日志常用命令1.grep '关键字' error.log:在error.log中搜索'关键字'2.grep -C10 '关键字' error.log:显示关键字前后10行记录3.grep '关键字' error.l
【持久化框架MyBatis3一】MyBatis版HelloWorld
bit1129
helloworld
MyBatis这个系列的文章,主要参考《Java Persistence with MyBatis 3》。
样例数据
本文以MySQL数据库为例,建立一个STUDENTS表,插入两条数据,然后进行单表的增删改查
CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
【Hadoop十五】Hadoop Counter
bit1129
hadoop
1. 只有Map任务的Map Reduce Job
File System Counters
FILE: Number of bytes read=3629530
FILE: Number of bytes written=98312
FILE: Number of read operations=0
FILE: Number of lar
解决Tomcat数据连接池无法释放
ronin47
tomcat 连接池 优化
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。
今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。
简单分析了一
java-75-二叉树两结点的最低共同父结点
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import ljn.help.*;
public class BTreeLowestParentOfTwoNodes {
public static void main(String[] args) {
/*
* node data is stored in
行业垂直搜索引擎网页抓取项目
carlwu
Lucene Nutch Heritrix Solr
公司有一个搜索引擎项目,希望各路高人有空来帮忙指导,谢谢!
这是详细需求:
(1) 通过提供的网站地址(大概100-200个网站),网页抓取程序能不断抓取网页和其它类型的文件(如Excel、PDF、Word、ppt及zip类型),并且程序能够根据事先提供的规则,过滤掉不相干的下载内容。
(2) 程序能够搜索这些抓取的内容,并能对这些抓取文件按照油田名进行分类,然后放到服务器不同的目录中。
[通讯与服务]在总带宽资源没有大幅增加之前,不适宜大幅度降低资费
comsci
资源
降低通讯服务资费,就意味着有更多的用户进入,就意味着通讯服务提供商要接待和服务更多的用户,在总体运维成本没有由于技术升级而大幅下降的情况下,这种降低资费的行为将导致每个用户的平均带宽不断下降,而享受到的服务质量也在下降,这对用户和服务商都是不利的。。。。。。。。
&nbs
Java时区转换及时间格式
Cwind
java
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。
问题描述:
向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。
readonly,只读,不可用
dashuaifu
js jsp disable readOnly readOnly
readOnly 和 readonly 不同,在做js开发时一定要注意函数大小写和jsp黄线的警告!!!我就经历过这么一件事:
使用readOnly在某些浏览器或同一浏览器不同版本有的可以实现“只读”功能,有的就不行,而且函数readOnly有黄线警告!!!就这样被折磨了不短时间!!!(期间使用过disable函数,但是发现disable函数之后后台接收不到前台的的数据!!!)
LABjs、RequireJS、SeaJS 介绍
dcj3sjt126com
js Web
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更
[应用结构]入口脚本
dcj3sjt126com
PHP yii2
入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。
Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。
控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文
haoop shell命令
eksliang
hadoop hadoop shell
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal
cp
du
dus
expunge
get
getmerge
ls
lsr
mkdir
movefromLocal
mv
put
rm
rmr
setrep
stat
tail
test
text
MultiStateView不同的状态下显示不同的界面
gundumw100
android
只要将指定的view放在该控件里面,可以该view在不同的状态下显示不同的界面,这对ListView很有用,比如加载界面,空白界面,错误界面。而且这些见面由你指定布局,非常灵活。
PS:ListView虽然可以设置一个EmptyView,但使用起来不方便,不灵活,有点累赘。
<com.kennyc.view.MultiStateView xmlns:android=&qu
jQuery实现页面内锚点平滑跳转
ini
JavaScript html jquery html5 css
平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htmHTML文件代码:
&
kafka offset迁移
kane_xie
kafka
在早前的kafka版本中(0.8.0),offset是被存储在zookeeper中的。
到当前版本(0.8.2)为止,kafka同时支持offset存储在zookeeper和offset manager(broker)中。
从官方的说明来看,未来offset的zookeeper存储将会被弃用。因此现有的基于kafka的项目如果今后计划保持更新的话,可以考虑在合适
android > 搭建 cordova 环境
mft8899
android
1 , 安装 node.js
http://nodejs.org
node -v 查看版本
2, 安装 npm
可以先从 https://github.com/isaacs/npm/tags 下载 源码 解压到
java封装的比较器,比较是否全相同,获取不同字段名字
qifeifei
非常实用的java比较器,贴上代码:
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
i
记录一些函数用法
.Aky.
位运算 PHP 数据库 函数 IP
高手们照旧忽略。
想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧)
当然用到了ip2long()函数把字符串转为整型数
sublime text 3 rust
wudixiaotie
Sublime Text
1.sublime text 3 => install package => Rust
2.cd ~/.config/sublime-text-3/Packages
3.mkdir rust
4.git clone https://github.com/sp0/rust-style
5.cd rust-style
6.cargo build --release
7.ctrl