2

一些有趣的VBS脚本 - Athenavi

 1 year ago
source link: https://www.cnblogs.com/Athenavi/p/17188827.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一些实用的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 对象。

__EOF__


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK