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…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...