我想知道是否有办法让它成为我的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进行编码,非常感谢你的帮助! :)
答案 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
脚本一样,这个脚本也可以针对远程计算机运行。