PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Структуризатор файлов и папок


Структуризатор файлов и папок

Сообщений 1 страница 2 из 2

1

код
Код:
Structure LoadData
  Datas$
  DatasID.l
EndStructure

Structure NameLoadData
  Name$
  NameID.l
EndStructure
Global NewList NamesD.NameLoadData() ,NewList ListD.LoadData(), t=0
;
;
;LoadImage(4,"strukt.ico")
;
;
Procedure x(Directory$) 
If Right(Directory$,1)<>"\":Directory$ + "\":EndIf 
   z=ExamineDirectory(#PB_Any, Directory$, "*.*")  

  If LCase(Left(Directory$, 3)) <> "c:\" Or Directory$<>""
          
  If z 
    While NextDirectoryEntry(z) 
      EntryName.s=DirectoryEntryName(z)
        DisableGadget(3, 1) 
           SetWindowTitle(0, "Пожалуйста, подождите! Идёт сортировка файлов и папок.")
              AddElement(ListD())
                 ListD()\Datas$ = EntryName.s
    Wend 
  EndIf   
      FinishDirectory(z) 
      
;    ForEach ListD()
;      Debug ListD()\Datas$
;    Next 
             Debug "-----------------------------------------------------------"    
    ForEach ListD()
      ;Debug ListD()\Datas$
      SetWindowTitle(0, "Пожалуйста, подождите! Идёт сортировка файлов и папок.")
      puti$ = (Mid(ListD()\Datas$, FindString(ListD()\Datas$, ".", 1)))
      Debug puti$
      Select puti$
                 Case ".html",".htm",".HTML",".HTM"  ;------  HTML  ------
                   ;Debug puti$
                   CreateDirectory(Directory$+"_WEB")
                   
                   n$ = RemoveString(ListD()\Datas$, puti$)
                   
                  If CopyFile(Directory$ + ListD()\Datas$ , Directory$+"_WEB\" + ListD()\Datas$)
                     Debug "Файл успешно скопирован"
                        Else
                          Debug "Возникли проблемы при копировании файла" 
                             EndIf
                  
 ; 
                  AddElement(NamesD())
                  NamesD()\Name$= n$
                  ;Debug ListD()\Datas$
                   DeleteFile(Directory$+ ListD()\Datas$)
                   DeleteElement(ListD())    
                   
                 Case ".rar",".RAR",".zip",".ZIP";------  АРХИВ  ------
                   CreateDirectory(Directory$+"_АРХИВ")
                   
                  If CopyFile(Directory$ + ListD()\Datas$ , Directory$+"_АРХИВ\" + ListD()\Datas$)
                     Debug "Файл успешно скопирован"
                        Else
                          Debug "Возникли проблемы при копировании файла" 
                            EndIf 
                   DeleteFile(Directory$+ ListD()\Datas$)
                   DeleteElement(ListD())    
                   
                 Case ".pb",".pbi",".pbp",".pbv";------  ПУРИК  ------
                   CreateDirectory(Directory$+"_PURE_BASIC")
                   
                  If CopyFile(Directory$ + ListD()\Datas$ , Directory$+"_PURE_BASIC\" + ListD()\Datas$)
                     Debug "Файл успешно скопирован"
                        Else
                          Debug "Возникли проблемы при копировании файла" 
                            EndIf 
                   DeleteFile(Directory$+ ListD()\Datas$)
                   DeleteElement(ListD()) 
                   
                 Case ".bmp",".dib",".gif",".jpg",".jpeg",".jpe",".jfif",".tif",".tiff",".tga",".png",".psd";------  ИЗОВРАЖЕНИЯ  ------
                   CreateDirectory(Directory$+"_IMAGES")
                   
                  If CopyFile(Directory$ + ListD()\Datas$ , Directory$+"_IMAGES\" + ListD()\Datas$)
                     Debug "Файл успешно скопирован"
                        Else
                          Debug "Возникли проблемы при копировании файла" 
                            EndIf 
                   DeleteFile(Directory$+ ListD()\Datas$)
                   DeleteElement(ListD())                   
      Default 
                   ForEach NamesD()
                     If ListD()\Datas$= NamesD()\Name$+"_files" Or ListD()\Datas$= NamesD()\Name$
                        Debug ListD()\Datas$
                          DeleteElement(ListD())
                             EndIf 
                   Next
      EndSelect        

    Next  

               Debug "---------------------------------------------------------"   
    ForEach NamesD()
      ;      Debug NamesD()\Name$
      SetWindowTitle(0, "Пожалуйста, подождите! Идёт сортировка файлов и папок.")
        papki$= NamesD()\Name$+"_files"
          ;Debug papki$
                If NamesD()\Name$ 
                  If CopyDirectory( Directory$+ NamesD()\Name$ , Directory$+"_WEB\"+ NamesD()\Name$,"" , #PB_FileSystem_Recursive )
                     Debug "Папка успешно скопирована"
                       Else
                          Debug "1. Возникли проблемы при копировании папки" 
                            EndIf
                       DeleteDirectory(Directory$+ NamesD()\Name$ ,"", #PB_FileSystem_Recursive)
                EndIf        
                If papki$
                            
                   If CopyDirectory( Directory$+ papki$ , Directory$+"_WEB\"+ papki$,"" , #PB_FileSystem_Recursive )
                     Debug "Папка успешно скопирована"
                        Else
                           Debug "2. Возникли проблемы при копировании папки" 
                               EndIf
                       DeleteDirectory(Directory$+ papki$ ,"", #PB_FileSystem_Recursive)

               EndIf 
               DeleteElement(NamesD())
    Next 
      
    t= 2  
    DisableGadget(3, 0)
  EndIf 
EndProcedure 

If OpenWindow(0, 0, 0, 300, 340, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SetWindowColor(0, RGB(180,180,180))
  ;SendMessage_(WindowID(0),#WM_SETICON,#False,ImageID(4))
  TextGadget(1,10,305,170,20,"",#PB_Text_Border)
  ExplorerTreeGadget(2, 10, 10, 280, 280,"")
  ButtonGadget(3,190,300,100, 30, "Структурировать")

    Repeat 
      event=WaitWindowEvent()

      String$ = GetGadgetText(2)
      If Event = #PB_Event_Gadget
        If EventGadget() =3 And String$<>""
          Debug EventGadget()
          x(String$)
        EndIf 
      EndIf 
      SetGadgetText(1, String$+" "+EntryName.s +" ")
      If t=0
          SetWindowTitle(0, "Структуратор папок и файлов.")
        ElseIf t=1
          SetWindowTitle(0, "Пожалуйста, подождите! Идёт сортировка файлов и папок.")
        ElseIf t=2
          SetWindowTitle(0, "Cортировка файлов и папок закончена!")
      EndIf
        

    Until event=#WM_CLOSE
  EndIf

0

2

Очень сырая программа. Черновик.

1. Зачем в цикле (каждом цикле) делать SetWindowTitle(0, "Пожалуйста, подождите! Идёт сортировка файлов и папок.") ?

Вижу недоведёную до конца попытку избавиться от этого через t которая идеологически неправильна. Как и организация основного цикла.

2. Вместо

Код:
CopyFile(Directory$ + ListD()\Datas$ , Directory$+"_АРХИВ\" + ListD()\Datas$)
 DeleteFile(Directory$+ ListD()\Datas$)

нужно применять RenameFile()

Код:
Example: 
  If RenameFile("C:\test.txt", "D:\temp\test_backup.txt")   
    Debug "Moving and renaming successful."    ; Moving and renaming of the file was successful
  Else 
    Debug "Moving and renaming failed."        ; Moving and renaming failed, e.g. because of a not found source file
  EndIf

3. Отладочный мусор

Считаю - не достойна этого раздела в таком виде, т.к. здесь должен быть образцовый код.
А этот код - студентам на разбор.

0


Вы здесь » PureBasic - форум » OpenSource » Структуризатор файлов и папок