Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [windows xp-komenda BAT] Usuwanie pustych plików
Forum PHP.pl > Inne > Hydepark
DeyV
W wyniku moich niezbyt rozsądnych zabaw z repartycjonowaniem i zmianą rozmiarów klastrów na jednej z partycji - dorobiłem się sporej ilości 'pustych' plików (size 0) oraz folderów bez zawartości.
Na szczęście dotkneło to tylko kilku procent plików - resztę udało mi się odzyskać.
Problem jest jednak taki, że generuje mi to straszny dodatkowy bałagan na dysku, stąd doszedłem do wniosku, że przydałoby się pousuwać te puste pliki i foldery.
Tak się jednak składa, że nie mam kilku wolnych tygodni by robić to ręcznie winksmiley.jpg a zajęcia z pisania plików bat miałem strasznie dawno.

Dlatego kieruje to pytanie do Was - potraficie pomóc w napisaniu takiej komendy, która przeskanowałaby podany dysk, a następnie usuwała pliki o rozmiarze zero, ostatecznie usuwając również puste foldery?
Seth
Proponuje uzyc wyszukiwarki dolaczonej do windowsa - jest tam opcja wyszukiwania plikow po okreslonym rozmiarze.

Jezeli to nie pomoze to daj znac sprobuje napsiac jakiegos VBSa do tego celu smile.gif
DeyV
Niestety - rozwiązanie to już testowałem - ale się nie powiodło, z dwóch powodów.
1. nie mozna podać dokładnego rozmiaru, co prawda możliwe jest podanie <= 1 , ale to nie to samo, co =0

2. usuwanie plików wyszukanych przez wyszukiwarkę jest mocno problematyczne. Przy większej ilości plików praktycznie nie ma możliwości by zaznaczyć je, i automatycznie usunąć.

edited.
Właśnie dostałęm informacje od Cudi'ego na temat programu Tweak Xp który ponoć potrafi to zrobić. Jeśli się uda - dam znać winksmiley.jpg
FiDO
A nie mozesz uzyc do tego php? Mysle, ze bedzie Ci latwiej niz meczyc sie z batami, za pomoca ktorych nawet nie sprawdzisz rozmiaru..

Aha.. moze sie tez przydac Total Commander jak nie chcesz sie bawic w php winksmiley.jpg Z latwoscia wyszukasz zerowe pliki i jeszcze latwiej je usuniesz.
Seth
Siuf napisalem...

Kod
' Skrypt wyszukujacy puste pliki.

' W zaleznosci od wyboru usuwa/przenosi/kasuje lub tylko wyswietla je

'

' Nalezy stworzyc katalog C:tmp

'

' (C) 2004 Seth



If msgbox("Czy napewno chcesz uruchomic skrypt wyszukujacy pliki ?", vbYesNo) = vbNo Then

  WScript.Quit

End If





On Error Resume Next



Dim objFSO, colDrives, objDrive, objFolder, colFiles, objFile, colSubfolders, objSubfolder, objExplorer, movePath, mode

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objExplorer = CreateObject("InternetExplorer.Application")



mode = "podgląd"



If msgbox("Czy chcesz uzyskać tylko podgląd wyszukanych plików ?", vbYesNo) = vbNo Then

  If msgbox("Czy chcesz usunąć wyszukane pliki ?", vbYesNo) = vbYes Then

    mode = "usuwanie"

  Else

    If msgbox("Czy chcesz przenieść wyszukane pliki do folderu C:tmp ?", vbYesNo) = vbYes Then

      mode = "przenoszenie"

    Else

      If msgbox("Czy chcesz skojowac wyszukane pliki do folderu C:tmp ?", vbYesNo) = vbYes Then

        mode = "kopjowanie"

      End If

    End If

  End If

End If



objExplorer.Navigate "about:blank"

objExplorer.ToolBar = False

objExplorer.StatusBar = True

objExplorer.Width = 400

objExplorer.Height = 300

Do While (objExplorer.Busy)

    Wscript.Sleep 200

Loop

objExplorer.Visible = True



PrintText "<b>Wybrano tryb: " & mode & "</b><br /><br />"



Set colDrives = objFSO.Drives



For Each objDrive In colDrives

  If objDrive.IsReady Then

    DoSearch objDrive

  End If

Next



If MsgBox( "Czy chcesz zamknąc okno Internet Explorera ?", vbYesNo ) = vbYes Then

  objExplorer.Quit

  Set objExplorer = Nothing

End If



Set objFSO = Nothing

Set colDrives = Nothing

Set objDrive = Nothing

Set objFolder = Nothing

Set colFiles = Nothing

Set objFile = Nothing

Set colSubfolders = Nothing

Set objSubfolder = Nothing



Sub DoSearch(Path)

  Set objFolder = objFSO.GetFolder(Path)

  Set colFiles = objFolder.Files



  For Each objFile In colFiles

    If objFile.Size = 0 Then ' tutaj sprawdzamy rozmiar pliku

      movePath = "C:tmp" & objFile.Name



      PrintText objFile.ParentFolder & "" & objFile.Name



      Select Case mode

        case "usuwanie"

          objFile.Delete

          PrintText "Usunieto"

        case "przenoszenie"

          objFile.Move movePath

          PrintText "Przeniesiony do " & movePath & "<br />"

        case "kopjowanie"

          objFile.Copy movePath

          PrintText "Skopjowany do " & movePath & "<br />"

      End Select

    End If

  Next



  Set colSubfolders = objFolder.SubFolders



  For Each objSubfolder In colSubfolders

    DoSearch objSubfolder.Path

  Next

End Sub



Sub PrintText(Text)

  objExplorer.Document.Write Text & "<br /><br />" & vbCrLf

End Sub

Ten kod nalezy wkleic do pliku z koncowka .vbs i odpalic smile.gif

Polecal bym za pierwszym razem odpalic tylko sam podglad aby zobaczyc czy przypadkiem jakies wazne pliki nie zostana skasowane.
DeyV
Co prawda skorzystałem z dobrego starego TC, ale jestem pod wrażeniem. Już zdążyłem zapomnieć, jakie możliwości mają takie skrypty. Mój antywir jednak nie zapomniał winksmiley.jpg i ledwie mi pozwolił na odpalenie tego cuda.

Wielkie dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.