VBS学习1 - 语法、内置函数、内置对象
文章目录
- 概述
- 执行脚本
- 语法
- 转义字符
- 文本弹框msgbx
- 定义变量dim(普通类型)
- 定义接收对象set
- 字符拼接&
- 用户自定义输入框inputbox以及输入判断ifelse
- 数组(参数表最大索引,非数组容量)
- 有容量无元素
- 基于元素确定容量
- 循环、迭代
- 内置函数
- 自定义函数
- print - 控制台打印
- getArraySize - 获取数组长度
- execCmd - 执行CMD命令
- readFileContent - 读取文件内容
- getEnvKeyValue - 获取某个环境变量值
- setEnvKeyValue - 新建或修改某个环境变量值
- Windows常用内置对象
- 文件对象:Scripting.FileSystemObject
- 系统环境变量对象:USER
概述
VBS(Visual Basic Script Editor): 基于Visual Basic开发的脚本语言文件
注释(仅有单行注释符号,无多行): 英文单引号’,
判断: 值是否等于无需像其他语言一样输入双等于号直接单等于号即可,不等于则使用<>进行替代
系统对象使用的文档(可直接参考微软的VBA文档):https://learn.microsoft.com/en-us/office/vba/api/overview/
语法细节:
1. 关键字大小写不敏感,函数名大小写敏感。
定义Function函数时如果没有设置返回值,则内部自动转成sub,而调用sub
执行脚本
//方式1
直接双击脚本//方式2 == CMD命令窗口
wscript //e:vbscript vbs脚本文件//方式3 == CMS命令行窗口
C:\Windows\System32\cscript.exe vbs脚本文件
语法
转义字符
'换行符 vbCrLfPublic Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionprint "fdsfsd"&"fsdfsdf"print "=========="print "fdsfsd"&vbCrLf&"fsdfsdf"

文本弹框msgbx
'类似前端的alert玩意
msgbox "弹框内容"

定义变量dim(普通类型)
dim name
name="lrc"msgbox name

定义接收对象set
Set oFS = CreateObject("Scripting.FileSystemObject")
字符拼接&
dim name,sport
name="lrc"
sport="swimming"msgbox name&"喜欢的运动是:"&sport

用户自定义输入框inputbox以及输入判断ifelse
格式: if then elseif then else then end if
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functiondim a,b,c,result
result = 0a = inputbox("请输入一个数字")
print ab = inputbox("请输入操作符")
print bc = inputbox("请输入另一个数组")
print cif b = "+" thenresult = CDbl(a) + CDbl(c)
elseif b = "-" thenresult = a - c
elseif b = "*" thenresult = a * c
elseif b = "/" thenresult = a / c
end ifprint a&b&c&"="&result
msgbox result

数组(参数表最大索引,非数组容量)
有容量无元素
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Function'定义容量为5个元素的数组,里面的括号表示数组的最大索引
dim nums(4)nums(0)=10
nums(3)=20print nums(0)
print nums(3)

基于元素确定容量
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionprint "=========="dim nums(2)
nums(0) = 0
nums(1) = 1
nums(2) = 2
for i = 0 to 2print nums(i)
nextprint "=========="dim nums2
nums2 = array(0,1,2)
for i = 0 to 2print nums2(i)
next

循环、迭代
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionpublic function getArraySize(nums)getArraySize = UBound(nums) - LBound(nums) + 1
end functiondim nums(5)
nums(0) = 1
nums(1) = 11
nums(2) = 111
nums(3) = 1111
nums(4) = 11111
nums(5) = 111111for i = 0 to getArraySize(nums)-1print i
Nextprint ""
print ""dim index
index =0
do while trueif index = getArraySize(nums) thenExit doend ifprint "nums["&index&"]: "&nums(index)index = index + 1
loopprint ""
print ""index =0
doprint "nums["&index&"]: "&nums(index)index = index + 1
loop until index = getArraySize(nums)print ""
print ""for each numElem in numsprint numElem
next

内置函数
//将入参转成小数类型Double出参结果
CDbl//将入参转成整数类型Integer出参结果
CInt//将入参转成长整数类型Long出参结果
CLNG//将入参转成长布尔类型Bool出参结果 == 0=>false 其他数字t=>true,转不出来数字报错
CBool//将入参转成字节类型Byte出参结果
CByte//用于将表达式转换为货币型数据(Currency)
CCur//用于将有效的日期表达式转换为日期型数据
CDate//将表达式转换为单精度浮点型数据(Single) == java的Float
CSng//返回字符串首字母的ANSI字符代码(ASCII值) == 数字
Asc//将指定的ANSI字符代码转换为相应的字符 == 字符串
Chr//将指定的数字转换为十六进制值
Hex//将指定的数字转换为八进制值
Oct//字符串2在字符串1的索引位置,索引从1开始,不是从0
InStr//字符串全部变成大写
ucase
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functiondim a,b,c,d,e,f,g'转成浮点数,入参非数字直接报错
a = CDbl("123")
print aa = CDbl("123.5")
print a'非数字直接报错
b = CBool(2)
print b
b = CBool(0)
print b
b = CBool(0.6)
print bprint ""'8字节的数字
c = CByte("30")
print cd = Asc("a")
print de = Chr(97)
print ef = Hex(20)
print fg = Oct(20)
print g

Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functiondim h, i
h = "fsdfds123f"
i = "123"
print InStr(h, i)

自定义函数
tip: 有无返回值,建议都使用 function 即可,毕竟相较于其他语言,并没有sub这玩意
print - 控制台打印
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionprint "fsfsdf"

getArraySize - 获取数组长度
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionpublic function getArraySize(nums)getArraySize = UBound(nums) - LBound(nums) + 1
end functiondim nums(5)arraySize = getArraySize(nums)
print arraySize

execCmd - 执行CMD命令
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionpublic function getArraySize(nums)getArraySize = UBound(nums) - LBound(nums) + 1
end function'' 创建WScript.Shell对象
'Set objShell = CreateObject("WScript.Shell")
'
'' 执行cmd命令,这里以"ipconfig /all"为例
'Set objExecObject = objShell.Exec("cmd /c ipconfig /all")
'
'' 读取命令执行的结果
'Do While Not objExecObject.StdOut.AtEndOfStream
' strText = objExecObject.StdOut.ReadAll()
'' WScript.Echo strText
' print "================="
' print "================="
' print strText
'Looppublic Function execCmd(cmd)dim result
' 创建WScript.Shell对象Set objShell = CreateObject("WScript.Shell")' 执行cmd命令,这里以"ipconfig /all"为例Set objExecObject = objShell.Exec("cmd /c "&cmd)' 读取命令执行的结果Do While Not objExecObject.StdOut.AtEndOfStreamresult = objExecObject.StdOut.ReadAll()LoopexecCmd = resultend Functiondim pwdResult,execComandStr
execComandStr = "pwd"
pwdResult = execCmd(execComandStr)print pwdResult

readFileContent - 读取文件内容
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionpublic function getArraySize(nums)getArraySize = UBound(nums) - LBound(nums) + 1
end functionpublic Function execCmd(cmd)dim result' 创建WScript.Shell对象Set objShell = CreateObject("WScript.Shell")' 执行cmd命令,这里以"ipconfig /all"为例Set objExecObject = objShell.Exec("cmd /c "&cmd)' 读取命令执行的结果Do While Not objExecObject.StdOut.AtEndOfStreamresult = objExecObject.StdOut.ReadAll()LoopexecCmd = resultend Functionpublic Function readFileContent(filePath)Set oFS = CreateObject("Scripting.FileSystemObject")dim result,currentRowContentresult = ""'文件不存在,直接退出If Not oFS.FileExists(filePath) Thenprint "[warning]file no exit: "&filePathreadFileContent = resultexit FunctionEnd If'文件存在Set oFile = oFS.OpenTextFile(filePath, 1, 0)do until oFile.AtEndOfStreamcurrentRowContent = oFile.ReadLineresult = result & currentRowContent & vbLfloopreadFileContent = resultend Functiondim resultresult = readFileContent("D:\workspace\personal\selenium-test\src\main\java\work\linruchang\vbsFile\1.txt")
print resultresult = readFileContent("D:\workspace\personal\selenium-test\src\main\java\work\linruchang\vbsFile\2.txt")
print result


getEnvKeyValue - 获取某个环境变量值
'打印日志
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Function'获取某个环境变量值
public Function getEnvKeyValue(keyName)Set oShell = CreateObject("WScript.Shell")Set oEnv = oShell.Environment("USER")getEnvKeyValue = oEnv(keyName)
end Functiondim result
result = getEnvKeyValue("OneDrive")
print result


setEnvKeyValue - 新建或修改某个环境变量值
'修改新建某个环境变量值
public Function setEnvKeyValue(keyName, keyValue)Set oShell = CreateObject("WScript.Shell")Set oEnv = oShell.Environment("USER")oEnv(keyName) = keyValue
end FunctionsetEnvKeyValue "OneDrive2", "C:\Users\Administrator\OneDrive"

Windows常用内置对象
系统对象使用的文档(可直接参考微软的VBA文档):https://learn.microsoft.com/en-us/office/vba/api/overview/
文件对象:Scripting.FileSystemObject
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Functionpublic function getArraySize(nums)getArraySize = UBound(nums) - LBound(nums) + 1
end functionpublic Function execCmd(cmd)dim result' 创建WScript.Shell对象Set objShell = CreateObject("WScript.Shell")' 执行cmd命令,这里以"ipconfig /all"为例Set objExecObject = objShell.Exec("cmd /c "&cmd)' 读取命令执行的结果Do While Not objExecObject.StdOut.AtEndOfStreamresult = objExecObject.StdOut.ReadAll()LoopexecCmd = resultend FunctionSet oShell = CreateObject("WScript.Shell")Set oFS = CreateObject("Scripting.FileSystemObject")'读取文本文件,并打印出来到控制台
dim file,fileContent,currentRowContent
file = "D:\workspace\personal\selenium-test\src\main\java\work\linruchang\vbsFile\1.txt"
Set oFile = oFS.OpenTextFile(file, 1, 0)
do until oFile.AtEndOfStreamcurrentRowContent = oFile.ReadLinefileContent = fileContent & currentRowContent & vbLf
loop
oFile.Closeprint fileContent


系统环境变量对象:USER
'打印日志
Public Function print(message)Set stdout=CreateObject("Scripting.FileSystemObject").GetStandardStream(1)stdout.WriteLine message
End Function'获取某个环境变量值
public Function getEnvKeyValue(keyName)Set oShell = CreateObject("WScript.Shell")Set oEnv = oShell.Environment("USER")getEnvKeyValue = oEnv(keyName)
end Functiondim result
result = getEnvKeyValue("OneDrive")
print result'修改新建某个环境变量值
public Function setEnvKeyValue(keyName, keyValue)Set oShell = CreateObject("WScript.Shell")Set oEnv = oShell.Environment("USER")oEnv(keyName) = keyValue
end FunctionsetEnvKeyValue "OneDrive2", "C:\Users\Administrator\OneDrive2"print(getenvkeyvalue("OneDrive2"))


相关文章:
VBS学习1 - 语法、内置函数、内置对象
文章目录 概述执行脚本语法转义字符文本弹框msgbx定义变量dim(普通类型)定义接收对象set字符拼接&用户自定义输入框inputbox以及输入判断ifelse数组(参数表最大索引,非数组容量)有容量无元素基于元素确定容量 循环…...
11 vue3之插槽全家桶
插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签。 匿名插槽 1.在子组…...
Excel 基础知识-操作手册1
Excel基础操作知识 一、工作窗口的视图控制 1、创建新窗口:依次点击【视图】----【新建窗口】命令,即可为当前工作簿创建新的窗口。在原有的工作簿中更改标题或表格内容时,新建的工作簿也会相应的更改。 2、窗口切换:在【视图】…...
Python 类的继承
Python 的代码组织如下: moudle:模块,和实例名和函数都是小写加下划线的方法表示。 class:类,使用首字母大写驼峰的写法表示。 类里面包含类的属性,__init__ ()方法和类的方法。 __init__() 方法在类的创建…...
gRPC介绍
gRPC 是一个由谷歌开发的现代开源高性能 RPC 远程过程调用( Remote Procedure Calls)框架,具备良好的兼容性,可在多个开发环境下运行。 相较于目前主流的 HTTP API 接口,gRPC 接口采用了领先的 HTTP/2 底层架构设计作…...
Git之误执行git rm -r解决方案(六十七)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...
html文件指什么
HTML 文件指的是超文本标记语言文件(HTML,HyperText Markup Language),它是用于构建网页内容的文件格式。HTML 文件包含一系列的标签(tags),这些标签用于定义网页的结构和元素,例如文…...
AAAI2024--频谱在多模态表示和融合中的作用更为有效:A Multimodal Spectrum Rumor Detector
https://github.com/dm4m/FSRU 多模态内容,如将文本与图像混合,对社交媒体中的谣言检测提出了重大挑战。现有的多模态谣言检测侧重于在空间和序列位置之间混合令牌进行单模态表示,或者在模态间融合谣言真实性的线索。然而,它们受…...
【Python报错已解决】SyntaxError invalid syntax
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
CI/CD持续集成和持续部署以及相关软件的使用
目录 一:CI/CD是什么? 1.1 持续集成(Continuous Integration) 1.2 持续部署(Continuous Deployment) 1.3 持续交付(Continuous Delivery) CI/CD 的好处包括: 二:git…...
Charles mac电脑配置
安装 Charles: 如果你还没有安装 Charles,可以从官方网站下载安装包并按照提示完成安装。 启动 Charles: 安装完成后,启动 Charles 应用程序。 设置 Charles 代理: Charles 默认的代理端口是 8888。你可以通过以下步…...
FPGA基本结构和简单原理
前言: FPGA全程为(Field Programmable Gate Array)现场可编程逻辑阵列,以基本的逻辑为主可以实现大多数芯片可以实现的功能,比如说:ASIC芯片等,在半导体领域有着重要的作用。 本文…...
【machine learning-七-线性回归之成本函数】
监督学习之cost function 成本函数权重、偏置如何实现拟合数据成本函数是如何寻找出来w和b,使成本函数值最小化? 在线性回归中,我们说到评估模型训练中好坏的一个方法,是用成本函数来衡量,下面来详细介绍一下 成本函数…...
Stable Diffusion Fooocus批量绘图脚本
当当当挡~,流动传热数值计算之余发布点AIGC相关文章,希望大家能喜欢~ 1 Stable Diffusion各种UI分析对比 提示:此部分主要是对SD各种界面的简要介绍和对比,只关注Fooocus批量绘图的读者可直接跳到第二部分。 Stable Diffusion …...
Web 安全基础教程:从零基础入门到精通
一、Web 安全概述 (一)Web 安全的定义与重要性 1.定义 Web 安全是指保护 Web 应用程序免受各种网络威胁,确保 Web 服务的保密性、完整性和可用性。在当今数字化时代,Web 应用广泛存在于各个领域,从电子商务到社交媒…...
ubuntu 20.04 ‘Wired Unmanaged‘ 网络无法配置解决方法
问题描述 系统:ubuntu20.04连上网线后右上角没有有线网络连接的图标,在网络配置界面也只有VPN和无线网络的配置;实际上此时电脑已经连接网络,通过DHCP获得IP地址可以正常访问网络。 解决办法 ubuntu有有两套网络管理软件:serve…...
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
图形验证码是网站安全防护的重要组成部分,能有效防止自动化脚本进行恶意操作,如何实现一个简单的运算图形验证码?本文封装了一个简单的js类,可以用于生成简单但安全的图形验证码。它支持自定义验证码样式,包括字体大小…...
SQL Server 语句日期格式查找方法
1. SQL Server中,处理日期格式和查找特定日期格式方法示例 在SQL Server中,处理日期格式和查找特定日期格式的记录是一个常见的需求。SQL Server提供了多种函数和格式选项来处理和比较日期。以下是一个详细的示例,展示了如何根据特定日期格式…...
【Python报错已解决】python setup.py bdist_wheel did not run successfully.
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
查询结果是1条记录,但执行更新却是2条记录原因查找
1、问题 在 sqlserver2008 数据库 select * from userinfo WHERE username SP4267ED2409011; 查询结果是1条记录,但执行更新 UPDATE userinfo SET qt qt 2.0 WHERE username SP4267ED2409011; 结果是这样的 Affected rows: 1 Affected rows: 1 返回了2个&#x…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
