使VBScript检查其中包含特定单词的文件的文件名,然后查找并删除该文件

时间:2015-05-09 06:07:25

标签: batch-file vbscript

我想知道是否有办法让它成为我的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中有类似的东西吗?是否还有一种方法可以删除任何带有'示例'的扩展名的文件。在名字中也是?例如:

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

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

1 个答案:

答案 0 :(得分:1)

ExpandEnvironmentStrings方法返回环境变量的扩展值。环境变量名称必须包含在%个字符之间,不区分大小写:

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

此处粘贴的所有下一个代码段都与链接源保持不变。可以成为任何VBScript初学者的起点。在下一个巨大的脚本存储库中激励自己:Script resources for IT professionals

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

  

以下VBS代码示例介绍了如何执行标准   通配符搜索数据文件。请注意,反斜杠分隔符必须   用另一个反斜杠(\\)进行转义。另外,使用时   " CIM_DataFile.FileName"在WHERE子句中,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 

这里有一个更智能,更快速的解决方案,其中包含全面的评论:How Can I Delete Specific Files in a Specific Folder?嘿,脚本专家!博客(十年之后):

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脚本一样,这个脚本也可以针对远程计算机运行。