【问题标题】:Make VBScript check for a file with a certain word in it's file name and then find and delete that file使 VBScript 检查文件名中包含特定单词的文件,然后查找并删除该文件
【发布时间】:2015-05-09 16:43:24
【问题描述】:

我想知道是否有办法使我的 vbs 脚本可以检查并删除名称中包含特定单词的任何文件。这是我目前所拥有的:

x=MsgBox ("Searching for any infected files...",64,"Search") 

DIM filesys
Set filesys = CreateObject("Scripting.FileSystemObject")
If filesys.FileExists("C:\Documents and Settings\Name\Desktop\example.txt") Then
    WScript.Sleep 1500
    x=MsgBox ("Warning! A infected file was found!",48,"Warning") 
    filesys.DeleteFile "C:\Documents and Settings\Name\Desktop\example.txt"
    x=MsgBox ("File was deleted!",48,"File Deleted")
    WScript.Sleep 1000
    x=MsgBox ("This Computer is now clean!",64,"Hooray!") 
Else 
    WScript.Sleep 500
    x=MsgBox ("File not found! This Computer is clean!",64,"Hooray!")
End If

还有没有办法让用户名/文件路径在任何计算机上都可以使用?我知道是

"C:\Documents and Settings\%username%\Desktop\example.txt"

批量,但是在 vbscript 中有类似的东西吗?是否还有一种方法可以删除名称中也包含“example”的任何扩展名的文件?例如:

filesys.DeleteFile "C:\Documents and Settings\Name\Desktop\example.anyextension"

非常感谢!我希望你不介意我的大量问题,我刚刚开始使用 VBS/VBScript 进行编码,非常感谢你的帮助! :)

【问题讨论】:

标签: batch-file vbscript


【解决方案1】:

ExpandEnvironmentStrings 方法返回环境变量的扩展值。环境变量名称,必须用% 字符括起来,不区分大小写:

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "Current user name: " _
    & WshShell.ExpandEnvironmentStrings("%USERNAME%")
WScript.Echo "Desktop folder: " _
    & WshShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Desktop"

所有下一个代码 sn-ps 从链接源粘贴到此处未更改。可以成为任何VBScript 初学者的起点。在下一个巨大的脚本存储库中激发自己:Script resources for IT professionals


Search for Files Using a Wildcard Query 窃取。使用 Like 关键字搜索计算机上包含波浪号 (~) 的所有文件。但是,请阅读 MSDN 上的 CIM_DataFile class

以下VBS 代码示例描述了如何执行标准 对数据文件的通配符搜索。请注意,反斜杠分隔符必须 用另一个反斜杠 (\\) 转义。另外,使用时 WHERE 子句中的“CIM_DataFile.FileName”,WMIPRVSE 进程将扫描任何可用存储设备上的所有目录。 这可能需要一些时间,特别是如果您已映射远程共享, 并且可以触发防病毒警告。

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2") 

Set colFiles = objWMIService.ExecQuery _ 
    ("Select * from CIM_DataFile where FileName Like '%~%'") 

For Each objFile in colFiles 
    Wscript.Echo objFile.Name 
Next 

这里有一个更智能、更快的解决方案,其中包含全面的 cmets:How Can I Delete Specific Files in a Specific Folder?嘿,脚本专家! 博客(近 10 岁):

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='T:\Act'} Where " _
        & "ResultClass = CIM_DataFile")

For Each objFile In colFileList
    If InStr(objFile.FileName, "current") Then
        objFile.Delete
    End If
Next

当然,像大多数WMI 脚本一样,这个脚本也可以在远程计算机上运行。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2017-04-26
    • 2019-01-04
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多