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…...
收藏必看|2026 版大厂 AI 岗位薪资曝光!普通程序员转型大模型最全指南
深夜收到大厂 HR 好友发来的内部资料,再三叮嘱切勿对外泄露。如今网络信息传播速度极快,这份 2026 年企业 AI 岗真实薪资内幕,也值得给广大程序员、零基础入行小白参考借鉴。 翻看完整薪资台账后,真切感受到当下大模型赛道的薪资差…...
AI开始替人办事后,最危险的不是模型不够强,而是它把旧资料当真了
AI开始替人办事后,最危险的不是模型不够强,而是它把旧资料当真了2026年真正值得重视的AI底层能力,是让模型知道该信谁 你有没有发现一个很扎心的变化。 以前我们用AI,最怕它不会。 现在我们用AI,最怕它太会了。 它能写…...
美团外卖mtgsig与waimai_sign双层签名逆向解析
1. 这不是“爬虫教程”,而是一份反向工程现场笔记你搜到这篇内容,大概率正卡在某个调试窗口前:抓包看到mtgsig和waimai_sign两个参数像两堵墙,无论怎么改请求头、换UA、清缓存,返回永远是{"code":403,"…...
学术写作创新突破!2026全流程AI论文工具精选指南
2026 年 AI 论文写作工具已进入全流程闭环 学术合规时代,千笔 AI(综合评分 99 分)中文学术场景标杆;Grammarly Academic与Elicit为英文论文写作首选;按需求匹配度 - 数据可信度 - 成本承受力三维模型选型,…...
第三卷第4章:原型模式设计思想
第三卷第4章:原型模式设计思想 目录介绍 01.案例引入与思考 1.1 痛点场景 1.2 它哪里不舒服 1.3 引出本篇主角 02.原型模式介绍 2.1 原型模式由来 2.2 原型模式定义...
从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战
从RD、CS到WK:SAR成像算法选型实战指南 当无人机掠过灾区上空,或卫星扫描地球表面时,合成孔径雷达(SAR)正通过电磁波穿透云层和黑暗,将地面信息转化为高分辨率图像。而决定图像质量的关键,在于工…...
5个必知的Universal-Updater高级功能:从QR扫描到后台安装
5个必知的Universal-Updater高级功能:从QR扫描到后台安装 【免费下载链接】Universal-Updater An easy to use app for installing and updating 3DS homebrew 项目地址: https://gitcode.com/gh_mirrors/un/Universal-Updater Universal-Updater是一款专为任…...
如何快速掌握Avidemux:新手完整入门指南与5个核心技巧
如何快速掌握Avidemux:新手完整入门指南与5个核心技巧 【免费下载链接】avidemux2 Avidemux2, simple video editor 项目地址: https://gitcode.com/gh_mirrors/avi/avidemux2 Avidemux是一款功能强大且完全开源的专业视频编辑工具,专为快速剪辑、…...
defx.nvim 安装与配置完全教程:从零开始搭建高效文件管理系统 [特殊字符]
defx.nvim 安装与配置完全教程:从零开始搭建高效文件管理系统 🚀 【免费下载链接】defx.nvim :file_folder: The dark powered file explorer implementation for neovim/Vim8 项目地址: https://gitcode.com/gh_mirrors/de/defx.nvim defx.nvim …...
1688运营培训/询盘成本从500元降到63.9!1688运营培训还原1688真实玩法
1688运营培训/询盘成本从500元降到63.9!1688运营培训还原1688真实玩法500块钱一个询盘,你敢信?做1688运营培训这么多年,这个数字我都觉得离谱。前阵子遇到一个老板,一上来就开始吐槽1688,说1688就是个垃圾平…...
