首页 > 其他分享 >一些有趣的VBS脚本

一些有趣的VBS脚本

时间:2023-03-07 17:22:20浏览次数:34  
标签:脚本 FormatWMIUTC WMIDateString Mid fso VBS Flag 开机 有趣

一些实用的VBS脚本

截取屏幕并将截图保存到剪贴板

With CreateObject("Word.Basic")
 .Sendkeys "{prtsc}"
 .FileQuit '.AppClose
End With

Msgbox "已将屏幕截取到剪贴板。", vbSystemModal+vbInformation, WScript.ScriptName

这段脚本使用 Visual Basic Scripting (VBS) 编写,目的是截取屏幕并将截图保存到剪贴板中。

具体解释如下:

  1. CreateObject("Word.Basic"):创建一个 Word.Basic 对象。Word.Basic 是 Microsoft Word 中的一个宏语言,可以通过该对象在代码中模拟键盘输入。

  2. Sendkeys "{prtsc}":在 Word.Basic 对象中发送 "{prtsc}" 键的按键事件,该键是屏幕截图的快捷键。

  3. FileQuit:在 Word.Basic 对象中关闭 Word 应用程序。

  4. Msgbox:在屏幕上弹出一个消息框,显示“已将屏幕截取到剪贴板。”的文本内容,并以“WScript.ScriptName”为标题。

因此,这段脚本的作用是截取当前屏幕的截图,并将其保存到剪贴板中,同时弹出一个消息框提示操作成功。

获取 Windows 系统的开机、关机时间信息

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent " _
& "Where Logfile = 'System' And EventCode = '6005' Or EventCode = '6006'")
For Each objEvent In colLoggedEvents
  Flag = Flag + 1
  If Flag = 1 Then
    Wscript.Echo "本次开机时间: " & FormatWMIUTC(objEvent.TimeWritten)
  ElseIf Flag = 2 Then
    Wscript.Echo "上次关机时间: " & FormatWMIUTC(objEvent.TimeWritten)
  ElseIf Flag = 3 Then
    Wscript.Echo "上次开机时间: " & FormatWMIUTC(objEvent.TimeWritten)
    Exit For
  End If
Next

'FormatUTC
Function FormatWMIUTC(WMIDateString)
  DS = " // :: "
  FormatWMIUTC = Left(WMIDateString,2)
  For i = 2 To 7
    FormatWMIUTC = FormatWMIUTC & Mid(WMIDateString, i * 2 - 1, 2) & Mid(DS,i,1)
  Next
  'FormatWMIUTC = Mid(WMIDateString, 1, 4) & "年" _
  '      & Mid(WMIDateString, 5, 2) & "月" _
  '      & Mid(WMIDateString, 7, 2) & "日 " _
  '      & Mid (WMIDateString, 9, 2) & ":" _
  '      & Mid(WMIDateString, 11, 2) & ":" _
  '      & Mid(WMIDateString,13, 2)
End Function

这段脚本使用 VBScript 语言编写,目的是获取 Windows 系统的开机、关机时间信息。

具体解释如下:

  1. strComputer = ".":将计算机名称设置为本地计算机。
  2. Set objWMIService = GetObject("winmgmts:" _:创建一个 WMI 服务对象,用于访问 Windows 管理信息。
  3. Set colLoggedEvents = objWMIService.ExecQuery _:使用 WMI 查询语言执行一个 WMI 查询,并将结果保存在一个事件对象集合中。
  4. ("Select * from Win32_NTLogEvent " _:查询 Win32_NTLogEvent 类中的所有日志事件。
  5. & "Where Logfile = 'System' And EventCode = '6005' Or EventCode = '6006'"):限制查询结果,只返回系统事件日志中的开机和关机事件。
  6. For Each objEvent In colLoggedEvents:循环遍历查询结果集合中的每一个事件对象。
  7. Flag = Flag + 1:用于记录事件对象的个数。
  8. If Flag = 1 Then:判断当前事件对象是否为第一个事件对象(即本次开机事件)。
  9. Wscript.Echo "本次开机时间: " & FormatWMIUTC(objEvent.TimeWritten):将本次开机时间输出到控制台,并调用 FormatWMIUTC 函数将事件时间格式化。
  10. ElseIf Flag = 2 Then:判断当前事件对象是否为第二个事件对象(即上次关机事件)。
  11. Wscript.Echo "上次关机时间: " & FormatWMIUTC(objEvent.TimeWritten):将上次关机时间输出到控制台,并调用 FormatWMIUTC 函数将事件时间格式化。
  12. ElseIf Flag = 3 Then:判断当前事件对象是否为第三个事件对象(即上次开机事件)。
  13. Wscript.Echo "上次开机时间: " & FormatWMIUTC(objEvent.TimeWritten):将上次开机时间输出到控制台,并调用 FormatWMIUTC 函数将事件时间格式化。
  14. Exit For:退出循环。
  15. Function FormatWMIUTC(WMIDateString):定义一个函数,用于将 WMI 时间格式转换为可读时间格式。
  16. DS = " // :: ":定义一个分隔符,用于分隔年、月、日、时、分、秒。
  17. FormatWMIUTC = Left(WMIDateString,2):将时间字符串中的前两个字符(即年份)赋值给格式化时间字符串。
  18. For i = 2 To 7:循环遍历时间字符串中的月、日、时、分、秒信息。
  19. FormatWMIUTC = FormatWMIUTC & Mid(WMIDateString, i * 2 - 1, 2) & Mid(DS,i,1):将每个时间信息和分隔符分别拼接到格式化时间字符串中。
  20. Next:循环结束。
  21. End Function:函数定义结束。

创建以当前日期命名的文件夹

Currentdate1=date()

CreateFolders "d:\Desket\"  & Currentdate1

Function CreateFolders(path)
    Set fso = CreateObject("scripting.filesystemobject")
    CreateFolderEx fso,path
    set fso = Nothing
End Function

Function CreateFolderEx(fso,path)
    If fso.FolderExists(path) Then
        Exit Function
    End If
    If Not fso.FolderExists(fso.GetParentFolderName(path)) Then
        CreateFolderEx fso,fso.GetParentFolderName(path)
    End If
    fso.CreateFolder(path)
End Function

这段脚本的功能是创建一个以当前日期为名的文件夹(在指定路径下),如果该文件夹已经存在,则不进行任何操作。

具体地,脚本首先调用 date() 函数获取当前日期,并将其保存在 Currentdate1 变量中。然后调用 CreateFolders 函数来创建文件夹,传入的参数是指定路径和当前日期拼接而成的字符串。在 CreateFolders 函数中,首先创建一个 scripting.filesystemobject 对象,然后调用 CreateFolderEx 函数,该函数会递归地创建目录(如果它们不存在)。如果目录已经存在,则直接退出函数,否则递归创建目录。最后,关闭 scripting.filesystemobject 对象。

标签:脚本,FormatWMIUTC,WMIDateString,Mid,fso,VBS,Flag,开机,有趣
From: https://www.cnblogs.com/Athenavi/p/17188827.html

相关文章

  • 使用 shell 脚本自动申请进京证 (六环外)
    问题背景外地车辆进入北京,需要办理《进京证》,不办理证件驶入后会被执法设备抓拍,一次罚100扣1分,目前唯一的线上办理通道是下载《北京交警》App,注册后添加车辆,就可以为......
  • Linux系统巡检、等保安全检查脚本
    以下shell脚本适合linux分支中的redhat、centos使用,运行脚本将结果输出到自定义的文件中,可将巡检脚本以root用户登录放在/usr/local/sbin的目录下执行。脚本只是一个检查......
  • shell脚本
    foriin$(echo$(cat/etc/pcdn/pcdn.conf|grepnics|awk'{print$2}')|awk'BEGIN{FS=",";OFS="";ORS=""}{for(x=1;x<=NF;x++){print$x"\n"}}');doecho$id......
  • xilinx zynmp linux 开机自启动脚本添加
    下面以linx5.4.0-xilinx-v2020.1为例说明如何添加自启动脚本。linux系统内核启动完成后会加载第一个进程init,关于init进程的介绍参考博客https://zhuanlan.zhihu.com/p/......
  • shell脚本入门
    Shell脚本入门#编写hell.sh文件.sh文件第一行,约定#!/bin/shecho"helloword"#启动hello.shbashhell.sh#若想直接./hello.sh启动,需要给hello.sh添加执行权......
  • Git仓库迁移实操(附批量迁移脚本)
    最近公司组织架构调整,整个组换到新部门,需要将原来组内的项目代码,全部迁移到新的group中去(公司用的gitlab服务器),要求保留所有的提交记录、分支和标签。我当然知道Gi......
  • 【THM】Hacking with PowerShell(Powershell脚本基础)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/powershell通过学习相关知识点:了解PowerShell攻击和PowerShell脚本的基础知识。PowerShell教程参考链......
  • JAVA执行es6脚本
    publicstaticvoidmain(String[]args){System.setProperty(ClientLogger.CLIENT_LOG_LEVEL,"OFF");//SpringApplication.run(SrmSettleAccountAppli......
  • centos7.9系统禁用selinux脚本
    临时关闭setenforcepermissive永久关闭配置文件路径/etc/sysconfig/selinux修改配置项SELINUX=enforcing为SELINUX=disabledsed-i's/SELINUX=enforcing/'SEL......
  • 使用navicat将oracle的sql脚本转换为mysql的sql脚本
    1.工具:navicat16(其他版本未测试,但过程应该差不多)2.准备两个数据库,oracle数据库和mysql数据库,(mysql数据库是空数据库,用于保存oracle中的数据)3.点击工具->数据传输  ......