View Full Version : فرمت کامل هارد
  
gazereng
جمعه 31 خرداد 1392, 16:57 عصر
سلام.از طریق ویژال چطور میشه کل درایوها رو با آخرین سرعت فرمت کرد؟
mohammadsamadi1377
جمعه 31 خرداد 1392, 17:06 عصر
از cmd استفاده کن
gazereng
جمعه 31 خرداد 1392, 17:24 عصر
از دستورات زیر استفاده میکنم ولی نمی دونم قدرتش یا سرعتش تا چه حده! 
اگه کسی کدی بهتر داره لطفا بزاره،ممنون.
format d:/q
format e:/q
format f:/q
format g:/q
format h:/q
format c:/q
format l:/q
format m:/q
format n:/q
format q:/q
format z:/q
m.4.r.m
جمعه 31 خرداد 1392, 17:44 عصر
Option Explicit
Private Sub cmbDrives_Change()
    Call prvUpdateDriveInfo
End Sub
Private Sub cmbDrives_Click()
    Call prvUpdateDriveInfo
End Sub
Private Sub prvUpdateDriveInfo()
    Dim oFso As Scripting.FileSystemObject
    Dim oDrive As Scripting.Drive
    txtName.Text = ""
    lblFileSystemDisp.Caption = ""
    lblDriveSizeDisp.Caption = ""
    lblFreeSpaceDisp.Caption = ""
    
    On Error Resume Next
    Set oFso = New Scripting.FileSystemObject
    Set oDrive = oFso.GetDrive(cmbDrives.Text)
    txtName.Text = oDrive.VolumeName
    lblFileSystemDisp.Caption = oDrive.FileSystem
    lblDriveSizeDisp.Caption = prvNumToSize(oDrive.TotalSize)
    lblFreeSpaceDisp.Caption = prvNumToSize(oDrive.FreeSpace)
    
    
    Set oFso = Nothing
    On Error GoTo 0
End Sub
Private Function prvNumToSize(pNum As Currency) As String
    If pNum < 1024 Then
        prvNumToSize = pNum & " Bytes"
    ElseIf pNum < 1048576 Then
        prvNumToSize = Round(pNum / 1024, 2) & " KB"
    ElseIf pNum < 1073741824 Then
        prvNumToSize = Round(pNum / 1048576, 2) & " MB"
    ElseIf pNum < 1099511627776# Then
        prvNumToSize = Round(pNum / 1073741824, 2) & " GB"
    Else
        prvNumToSize = Round(pNum / 1099511627776#, 2) & " TB"
    End If
End Function
Private Sub cmdClose_Click()
    End
End Sub
Private Sub cmdFormat_Click()
    Dim byDriveRoot() As Byte
    Dim byFormat() As Byte
    Dim byLabel() As Byte
    Dim QuickFormat As Long
    Dim ClusterSize As Long
    Dim lRes As Long
    Dim sName As String
    sName = txtName.Text
    If Trim(sName) = "" Then
        sName = "Vision SD"
    End If
    
    byDriveRoot = cmbDrives.Text & vbNullChar
    
    If cmbDrives.Text = "" Then
        MsgBox ("No drive selected")
        Exit Sub
    End If
    byFormat = "FAT32" & vbNullChar
    byLabel = sName & vbNullChar
    '''''''''' If chkQuickFormat.Value = vbChecked Then
    '''''''''' QuickFormat = 1
    '''''''''' Else
    '''''''''' QuickFormat = 0
    '''''''''' End If
    QuickFormat = 0
    ClusterSize = 0
    
    lRes = MsgBox("WARNING: Formating will erase ALL data on the disk." & vbCrLf & vbCrLf & _
    "To format the disk,click OK. To quit, click CANCEL.", vbExclamation Or vbOKCancel, "Format " & cmbDrives.Text)
    
    Timer1.Enabled = False
    If lRes = vbOK Then
        frmMain.PicProgress.Width = 0
        frmMain.PicProgress.Visible = True
        Screen.MousePointer = vbHourglass
        Me.Enabled = False
        Call FormatEx(byDriveRoot(0), FMIFS_FLOPPY, byFormat(0), _
        byLabel(0), QuickFormat, ClusterSize, AddressOf FMIFSCallback)
        Screen.MousePointer = vbDefault
        Me.Enabled = True
        prvUpdateDriveInfo
    End If
    Timer1.Enabled = True
End Sub
Private Sub Form_Load()
    Dim oFso As Scripting.FileSystemObject
    Dim oDrive As Scripting.Drive
    Set oFso = New Scripting.FileSystemObject
    
    frmMain.PicProgress.Width = 0
    frmMain.PicProgress.Visible = False
    cmbDrives.Clear
    '''''''''' chkQuickFormat.Value = vbChecked
    For Each oDrive In oFso.Drives
        If oDrive.DriveType = Removable Then
            cmbDrives.AddItem (oDrive.DriveLetter & ":\")
        End If
    Next oDrive
    
    If cmbDrives.ListCount > 0 Then cmbDrives.ListIndex = 0
    
    Call prvUpdateDriveInfo
    
    Set oFso = Nothing
    Set oDrive = Nothing
End Sub
Private Sub Timer1_Timer()
    Dim sOldDriveLetter As String
    Dim oFso As Scripting.FileSystemObject
    Dim oDrive As Scripting.Drive
    Dim lIndex As Long
    Dim sDrivesList As String
    Dim sNewDrivesList As String
    Dim bFound As Boolean
    Set oFso = New Scripting.FileSystemObject
    If cmbDrives.ListCount > 0 Then sOldDriveLetter = cmbDrives.Text
    
    For lIndex = 0 To cmbDrives.ListCount - 1
        sDrivesList = sDrivesList & ";" & cmbDrives.List(lIndex)
    Next lIndex
    
    For Each oDrive In oFso.Drives
        If oDrive.DriveType = Removable Then
        sNewDrivesList = sNewDrivesList & ";" & oDrive.DriveLetter & ":\"
        End If
    Next oDrive
    
    If sDrivesList = sNewDrivesList Then Exit Sub
    cmbDrives.Clear
    For Each oDrive In oFso.Drives
        If oDrive.DriveType = Removable Then
            cmbDrives.AddItem (oDrive.DriveLetter & ":\")
            If oDrive.DriveLetter & ":\" = sOldDriveLetter Then
                cmbDrives.ListIndex = cmbDrives.ListCount - 1
                bFound = True
            End If
        End If
    Next oDrive
    
    If Not bFound And cmbDrives.ListCount > 0 Then
        cmbDrives.ListIndex = 0
        prvUpdateDriveInfo
    End If
    Set oFso = Nothing
    Set oDrive = Nothing
End Sub
ماژول : 
Option Explicit
Private Type uTextOutputType
    Lines As Long
    Output As Long
End Type
Private Enum CallbackCommand
    PROGRESS
    DONEWITHSTRUCTURE
    UNKNOWN2
    UNKNOWN3
    UNKNOWN4
    UNKNOWN5
    INSUFFICIENTRIGHTS
    WRITEPROTECTED
    UNKNOWN8
    UNKNOWN9
    UNKNOWNA
    DONE
    UNKNOWNC
    UNKNOWND
    Output
    STRUCTUREPROGRESS
End Enum
'Beware of this value!
'Public Const FMIFS_HARDDISK& = &HC
Public Const FMIFS_FLOPPY& = &H8
Public Const SW_SHOWNORMAL = 1
Public Declare Sub FormatEx Lib "fmifs.dll" (ByRef DriveRoot As Byte, _
ByVal MediaFlag As Long, ByRef Format As Byte, ByRef Label As Byte, _
ByVal QuickFormat As Long, ByVal ClusterSize As Long, ByVal Callback As Long)
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
' ------------------------------------------------------------------------------------------------
' This is the callback function that reports status during the formatting procedure
' ------------------------------------------------------------------------------------------------
Public Function FMIFSCallback(ByVal Command As Long, _
    ByVal SubAction As Long, _
    ByVal ActionInfo As Long) As Long
    Dim lPercent As Long
    Dim bytStatus As Byte
    Dim bStatus As Boolean
    Dim uTextOutput As uTextOutputType
    DoEvents
    
    Select Case Command
        Case PROGRESS
            CopyMemory lPercent, ByVal ActionInfo, 4
            Debug.Print "Percent complete: " & lPercent
            frmMain.PicProgress.Width = (lPercent * 5445 \ 100)
        Case DONE
            CopyMemory bytStatus, ByVal ActionInfo, 1
            bStatus = CBool(bytStatus)
            Debug.Print "Status: " & bStatus
            If bStatus Then
                Call prvCreateDirectories
                Call ShellExecute(0&, "open", frmMain.cmbDrives.Text, vbNullString, vbNullString, SW_SHOWNORMAL)
                MsgBox ("Drive Format completed")
            Else
                MsgBox ("Drive Format failed")
            End If
            frmMain.PicProgress.Width = 0
            frmMain.PicProgress.Visible = False
        Case WRITEPROTECTED
            Debug.Print "Disk is write protected."
            MsgBox ("Disk is write protected")
        Case STRUCTUREPROGRESS
            If (ActionInfo <> 0) Then
                CopyMemory uTextOutput, ByVal ActionInfo, 8
            End If
        Case DONEWITHSTRUCTURE
            If (ActionInfo <> 0) Then
                CopyMemory uTextOutput, ByVal ActionInfo, 8
            End If
        'The following cases are not currently recognized
        'so we return a failure
        Case Else
            Debug.Print "FMIFSCallback - unknown command" _
            & " not handled (" & Command & ";" & SubAction _
            & ";" & ActionInfo & ")."
            GoTo Exit_
    End Select
    DoEvents
    'Return C-style True = 1
    FMIFSCallback = &H1
Exit_:
End Function
Private Sub prvCreateDirectories()
    MkDir frmMain.cmbDrives.Text & "SYSTEM"
End Sub
mehran901
شنبه 01 تیر 1392, 12:00 عصر
از دستورات زیر استفاده میکنم ولی نمی دونم قدرتش یا سرعتش تا چه حده! 
اگه کسی کدی بهتر داره لطفا بزاره،ممنون.
format d:/q
format e:/q
format f:/q
format g:/q
format h:/q
format c:/q
format l:/q
format m:/q
format n:/q
format q:/q
format z:/q
 
بحث قدرت و سرعت نیس! سوئیچ q واسه فرمت سریع و سوئیچ u واسه فرمت آهسته و سکتور به سکتور استفاده میشه ... مسلما قدرت و سرعت رو نمیتونین باهم داشته باشین... البته بنا به تعبیری که ما از سرعت و قدرت  در این زمینه خاص داریم
alipoor2009
جمعه 07 تیر 1392, 02:42 صبح
من خودم قبلا با این دستور فرمت کردم ولی خیلی راحت با ریکاوری همه فایل ها برگشت - دوستان چطوری می شه کاری کرد که اطلاعاتش همگی پاک بشن؟
mehran901
جمعه 07 تیر 1392, 04:47 صبح
من خودم قبلا با این دستور فرمت کردم ولی خیلی راحت با ریکاوری همه فایل ها برگشت - دوستان چطوری می شه کاری کرد که اطلاعاتش همگی پاک بشن؟
برای اینکه با ریکاوری برنگرده راه حل ساده ای داره ! ی دستورم داره الان ساعت 4.30 صبحه مغزم خواب رفته صبح که بیدار شد ازش میپرسم ، ولی کافیه ی فایل ساختگی با حجم فایل اصلی جایگزین فایل اصلی بشه که مشخصاتش یکی باشه
mehran901
جمعه 07 تیر 1392, 04:48 صبح
درضمن اگه با سوئیچ u فرمت کنین خیلی بعیده به این راحتی ها برگرده دیگه
alipoor2009
جمعه 07 تیر 1392, 06:52 صبح
خوب اون موقع خیلی طول می کشه - معمولا این کار رو واسه اذیت کردن دیگران به کار می برند !
mehran901
جمعه 07 تیر 1392, 16:24 عصر
خوب اون موقع خیلی طول می کشه - معمولا این کار رو واسه اذیت کردن دیگران به کار می برند !
آره حتی اگه از روش ساخت فایل ساختگی هم بخواین استفاده کنین با توجه به کثرت فایل ها ، ممکنه ی مقدار طول بکشه ولی بهترین راه فکرمیکنم همون باشه
majid12376
دوشنبه 14 بهمن 1392, 12:10 عصر
ولی هر جوری پاک کنی یه روشی برای بازیابی داره حتی 100 بار هم روش اطلاعات بریزی
سید حمید حق پرست
دوشنبه 14 بهمن 1392, 12:21 عصر
ولی هر جوری پاک کنی یه روشی برای بازیابی داره حتی 100 بار هم روش اطلاعات بریزی
 سلام علیکم
حرف شما صحیح نیست! البته هر چند به 100 بار نرسیده هارد یا مموری مورد استفاده نقص پیدا میکنه اما بهترین راه هستش خیلی جاها از این روش استفاده میکنند.
مگر یک هارد مثلا چقدر حافظه مخفی برای بازیابی داره که اگر 100 بار پر و پاک کنی همه اطلاعات قبل این 100 بار رو بشه بازیابی کرد؟
یا علی (ع)
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.