标题:[求助]希望指点一下,关于文件的操作。
只看楼主
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
 问题点数:0 回复次数:8 
[求助]希望指点一下,关于文件的操作。
我已经写了n天了,小弟刚刚学习vb临时遇到点问题,希望能够得到高手的指点。
我想通过vb实现删除u盘中存在的隐藏文件,因为病毒往往都是隐藏文件。我已经完成了识别u盘部分,剩下的获取隐藏文件和删除部分,由于本人水平有限,希望大虾指点一下。我是用vb6.0写的,源程序如下。
gJvwEovQ.rar (1.92 KB) [求助]希望指点一下,关于文件的操作。


搜索更多相关主题的帖子: 文件 
2007-09-25 20:46
qlong0728
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:272
专家分:0
注 册:2007-6-15
得分:0 

给点例子你,不知能不能对你有帮助.

Dir ([PathName],[Attributes as VbFileAttribute = vbNormal]) as String

解释:PathName:文件或文件夹的绝对路径。
Attributes:文件的属性--默认值:vbNormal 是普通文件,vbHidden 是隐藏文件,vbDirectory是文件夹。
"[]"内为可以选项。Dir(file)=""表示文件或文件夹不存,即文件或文件夹的实际路径文空。Dir(file)<>""表示文件或文件夹存在,即文件或文件夹实际路径不为空。

例如判断C:\Windows\System32\cmd.exe是否存在,如存在,就调用它,可用下列语句:
’文件存,利用Shell调用,默值为vbNormal
If Dir("C:\Windows\System32\cmd.exe")<>"" Then
Shell "C:\Windows\System32\cmd.exe"
End If
如果判断的文件是隐藏文件,上面的语则无法判断出来,这时就需要加上后面的可选项目,例如
判断D盘根目录下是否有隐藏文件text.txt,就用下面的源代码:
If Dir("D:\text.txt",vbHidden)<>"" Then
Msgbox "找到Text.txt隐藏文件"
End If

判断件夹是否存,与判断隐藏文件的方法一样,可用下列语句:
Dir("文件夹路径",vbDirectory)<>""
例如,要判断文件D:\Backup是否存在,源代码如下:
If Dir("D:\Backup",vbDirectory)<>"" Then
Msgbox "文件夹:D:\Backup 存在!"
End If


程序人员写程序,又拿程序换酒钱。 奔驰宝马贵者趣,公交自行程序员。 不见满街漂亮妹,哪个归得程序员。
2007-09-25 21:49
qlong0728
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:272
专家分:0
注 册:2007-6-15
得分:0 

简单的
s = Dir("U盘\*.*", vbHidden)
Do While s <> ""
SetAttr "cU盘\" & s, vbNormal
s=dir()
Loop
Kill "U盘\*.*"


程序人员写程序,又拿程序换酒钱。 奔驰宝马贵者趣,公交自行程序员。 不见满街漂亮妹,哪个归得程序员。
2007-09-25 21:53
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
得分:0 
谢谢qlong0728大哥的耐心指点,关于这点我已经试过了,你那样是要针对你已经知道文件名的情况下,我现在这个代码主要想实现,不知道文件名的情况下只针对优盘上面的隐藏文件起作用。
2007-09-26 08:19
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
得分:0 
以下是引用qlong0728在2007-9-25 21:53:50的发言:

简单的
s = Dir("U盘\*.*", vbHidden)
Do While s <> ""
SetAttr "cU盘\" & s, vbNormal
s=dir()
Loop
Kill "U盘\*.*"

关于这点,我这里有个问题,如果u盘中没有其他文件,只有病毒文件,这个过程是可以的,但是如果同时还有其他文件,kill "u盘\*.*" 就会删除u盘中所有的文件了。也包括非隐藏文件。

2007-09-26 08:23
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
得分:0 
希望大虾你能根据我所说的情况继续分析一下。我的想法是,先获取u盘隐藏文件的路径,然后用相关setattr函数设置vbnormal,然后利用已经获取的路径删除相关文件。以达到清除隐藏文件的目的。
2007-09-26 08:26
qlong0728
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:272
专家分:0
注 册:2007-6-15
得分:0 

画公仔要画出肠了
再加一个判断,如果是隐藏就删除

s = Dir("U盘\*.*", vbHidden)
Do While s <> ""
If GetAttr("U盘\" & s) = vbHidden Then
SetAttr "U盘\" & s, vbNormal
Kill "U盘" & s
End If
s = Dir()
Loop

提醒你一下,如果又只读,又是隐藏,vbHidden 参数又变了.


程序人员写程序,又拿程序换酒钱。 奔驰宝马贵者趣,公交自行程序员。 不见满街漂亮妹,哪个归得程序员。
2007-09-26 11:18
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
得分:0 

谢谢你了,我已经用上面那个段代码给解决问题了。不过现在又有点新的问题就是
Private Sub 退出_Click()

Dim nType As Long
Dim s As String
Dim sDrive As String
Dim pos As Integer
Dim nName As Long

s = String(256, Chr(0)) '清空S

GetLogicalDriveStrings Len(s), s '获得盘符
Do
pos = InStr(s, Chr(0))

sDrive = Left(s, pos - 1)


s = Mid(s, pos + 1)

nType = GetDriveType(sDrive)

If nType = 2 Then
'在这里添加一行代码,实现打开优盘功能。

Exit Do
End If

Loop Until pos <= 0

End
End Sub

2007-09-26 12:27
lucifer0928
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-10
得分:0 

上面那个问题我已经解决了。Shell "explorer " & App.Path, vbNormalFocus

2007-09-26 12:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-172855-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.281240 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved