Что нового

[Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файлов

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Какое-то время назад, ребята с форума помогли мне с программой "Слайдшоу" которое листает фото из выбранной папки, но к сожалению сейчас я попробовал запустить программу и она не смогла найти ни одной фотографии вот код

Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>


$hGui = GUICreate('Функция FileSelectFolder')
$iButton = GUICtrlCreateButton('-', 10, 10, 21, 21, $BS_ICON)

GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $iButton
        
            $sPath = FileSelectFolder('Выберите папку', '', 3, @DesktopDir, $hGui)
         
            If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop
       #include <GuiConstantsEx.au3>
#include <File.au3>

$Folder = $sPath
$Files = _FileListToArray($Folder, "*.jpg", 1, True)
If @error Then Exit

Global $Width = 960, $Height = 600, $i = 1, $Pic

$GUI = GUICreate("Example", $Width, $Height)
$Pic = GUICtrlCreatePic($Files[1], 0, 0, $Width, $Height)
GUISetState()

Do
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      ExitLoop
    Case $GUI_EVENT_PRIMARYDOWN
      $i += 1
      If $i > $Files[0] Then $i = 1
      GUICtrlDelete($Pic)
      $Pic = GUICtrlCreatePic($Files[$i], 0, 0, $Width, $Height)
    Case $GUI_EVENT_SECONDARYDOWN
      $i -= 1
      If $i < 1 Then $i = $Files[0]
      GUICtrlDelete($Pic)
      $Pic = GUICtrlCreatePic($Files[$i], 0, 0, $Width, $Height)
  EndSwitch
Until 0

		 Case $GUI_EVENT_CLOSE
            GUIDelete($hGui)
            ExitLoop
    EndSwitch
WEnd


вот, на форуме ничего с похожей проблемой не нашел, и это пол беды


я решил взять за основу к другому скрипту FileSelectFolder. Но так же он совершенно не ищет файлы
и кстати, хотел бы попросить дописать его


Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Word.au3>
#include <File.au3>

; Пример 1
$hGui = GUICreate("Дешифратор анкет 1.0.0", 500,500, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018)
$iButton = GUICtrlCreateButton('-', 10, 10, 21, 21, $BS_ICON)

GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $iButton
                        $sPath = FileSelectFolder('Выберите папку', '', 3, @DesktopDir, $hGui)
		             If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop


$Folder = $sPath
$Files = _FileListToArray($Folder, "\*.para", 1, True) ; НЕ МОЖЕТ НАЙТИ ТАКОЕ РАСШИРЕНИЕ А ТАКЖЕ И ДРУГИЕ ИЗВЕСТНЫЕ
FileMove($sPath "\*.para", $sPath "\*.txt")

If @error Then Exit

GUISetState()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  $hFile = FileOpen($Folder "\*.txt", 0)                                                                 ;
   $sText = FileRead($hFile)                                                                             ;
   FileClose($hFile)                                                                                     ;
StringReplace($sText, '1', '')                                                                           ;
MsgBox(0, "Ответов с 1 баллом", @Extended)                                                               ;
                                                                                                         ;
StringReplace($sText, '2', '')                                                                           ;
MsgBox(0, "Ответов с 2 баллами", @Extended)                                                              ;
                                                                                                         ;
StringReplace($sText, '0', '')                                                                           ;
MsgBox(0, "ОШибок", @Extended)                                                                           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Case $GUI_EVENT_CLOSE
            GUIDelete($hGui)
            ExitLoop
EndSwitch

WEnd


там где взято в рамочку, необходимо сделать так, чтобы помимо подсчета всех определенно заданых символов открвывался отдельно MsgBox такого вида
____________________________
| Имя файла без расширения Х |
|__________________________ |
|Ответов с 1 баллом |
| 10 |
|___________________________|

____________________________
| Имя файла без расширения Х |
|__________________________ |
|Ответов с 2 баллами |
| 10 |
|___________________________|


____________________________
| Имя файла без расширения Х |
|__________________________ |
|ОШИБОК |
| 10 |
|___________________________|

Открыться они должны для каждого файла отдельно
как сделать текст с помощью Label я знаю, конкретно интересует отдельность и как назвать MsgBox Именем файла

На форуме, я к сожалению подобных вещей не обнаружил и прошу помочь мне

Заранее спасибо
 

Kasper

Знающий
Сообщения
70
Репутация
8
Re: [Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файло

Я не до конка понял суть того что вы хотите но можете под себя подстроить
Код:
#include <File.au3>
#include <Array.au3>

$FileList=_FileListToArray(@ScriptDir, "*.au3")
If @error=4 Then
    MsgBox (0,"","Файлы/папки не найдены.")
    Exit
EndIf
For $i = 1 To $FileList[0]
$nFile = StringSplit($FileList[$i],'.')
$MsgBox = MsgBox(1, $FileList[$i],'_______________________________________'&@CRLF&'| Имя файла без расширения '&$nFile[1]&'  |'&@CRLF&'|_____________________________________ |'&@CRLF&'|Ответов с 1 баллом                           |'&@CRLF&'|     10                                                      |'&@CRLF&'|______________________________________|')
If $MsgBox = 2 Then ExitLoop
Next
_ArrayDisplay($FileList,"$FileList")


И у меня ваш второй скрипт который я подправил работает и находит файлы и переименовывает их
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Word.au3>
#include <File.au3>

; Пример 1
$hGui = GUICreate("Дешифратор анкет 1.0.0", 500,500, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018)
$iButton = GUICtrlCreateButton('-', 10, 10, 21, 21, $BS_ICON)

GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $iButton
			$sPath = FileSelectFolder('Выберите папку', '', 3, @DesktopDir, $hGui)
			If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop


$Folder = $sPath
$Files = _FileListToArray($Folder, "*.au3", 1, True) ; НЕ МОЖЕТ НАЙТИ ТАКОЕ РАСШИРЕНИЕ А ТАКЖЕ И ДРУГИЕ ИЗВЕСТНЫЕ
FileMove($sPath&"\*.au3", $sPath&"\*.txt")

If @error Then Exit

GUISetState()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  $hFile = FileOpen($Folder&"\*.txt", 0)                                                                 ;
   $sText = FileRead($hFile)                                                                             ;
   FileClose($hFile)                                                                                     ;
StringReplace($sText, '1', '')                                                                           ;
MsgBox(0, "Ответов с 1 баллом", @Extended)                                                               ;
;
StringReplace($sText, '2', '')                                                                           ;
MsgBox(0, "Ответов с 2 баллами", @Extended)                                                              ;
;
StringReplace($sText, '0', '')                                                                           ;
MsgBox(0, "ОШибок", @Extended)                                                                           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Case $GUI_EVENT_CLOSE
            GUIDelete($hGui)
            ExitLoop
EndSwitch

WEnd
 
Автор
V

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Re: [Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файло

Kasper сказал(а):
Я не до конка понял суть того что вы хотите но можете под себя подстроить
Код:
#include <File.au3>
#include <Array.au3>

$FileList=_FileListToArray(@ScriptDir, "*.au3")
If @error=4 Then
    MsgBox (0,"","Файлы/папки не найдены.")
    Exit
EndIf
For $i = 1 To $FileList[0]
$nFile = StringSplit($FileList[$i],'.')
$MsgBox = MsgBox(1, $FileList[$i],'_______________________________________'&@CRLF&'| Имя файла без расширения '&$nFile[1]&'  |'&@CRLF&'|_____________________________________ |'&@CRLF&'|Ответов с 1 баллом                           |'&@CRLF&'|     10                                                      |'&@CRLF&'|______________________________________|')
If $MsgBox = 2 Then ExitLoop
Next
_ArrayDisplay($FileList,"$FileList")


И у меня ваш второй скрипт который я подправил работает и находит файлы и переименовывает их
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Word.au3>
#include <File.au3>

; Пример 1
$hGui = GUICreate("Дешифратор анкет 1.0.0", 500,500, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018)
$iButton = GUICtrlCreateButton('-', 10, 10, 21, 21, $BS_ICON)

GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $iButton
			$sPath = FileSelectFolder('Выберите папку', '', 3, @DesktopDir, $hGui)
			If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop


$Folder = $sPath
$Files = _FileListToArray($Folder, "*.au3", 1, True) ; НЕ МОЖЕТ НАЙТИ ТАКОЕ РАСШИРЕНИЕ А ТАКЖЕ И ДРУГИЕ ИЗВЕСТНЫЕ
FileMove($sPath&"\*.au3", $sPath&"\*.txt")

If @error Then Exit

GUISetState()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  $hFile = FileOpen($Folder&"\*.txt", 0)                                                                 ;
   $sText = FileRead($hFile)                                                                             ;
   FileClose($hFile)                                                                                     ;
StringReplace($sText, '1', '')                                                                           ;
MsgBox(0, "Ответов с 1 баллом", @Extended)                                                               ;
;
StringReplace($sText, '2', '')                                                                           ;
MsgBox(0, "Ответов с 2 баллами", @Extended)                                                              ;
;
StringReplace($sText, '0', '')                                                                           ;
MsgBox(0, "ОШибок", @Extended)                                                                           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Case $GUI_EVENT_CLOSE
            GUIDelete($hGui)
            ExitLoop
EndSwitch

WEnd


хммм, а вот это интересно, то что работает, это замечательно, а почему у меня вот лично файлы не обнаруживает, не понимаю.....



_____________________________________________________________________________________________________
а на счет того, что я имел ввиду. тоесть

в шапке msgBox должно быть название файла который он читает в данный момент и так же для каждого файла
к примеру

____________________________
| array.au3 Х |
|__________________________ |
|Ответов с 1 баллом |
| 10 |
|___________________________|
 

Kasper

Знающий
Сообщения
70
Репутация
8
Re: [Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файло

хммм, а вот это интересно, то что работает, это замечательно, а почему у меня вот лично файлы не обнаруживает, не понимаю.....
Даже мой исправлений вариант ?
 
Автор
V

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Re: [Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файло

Kasper сказал(а):
хммм, а вот это интересно, то что работает, это замечательно, а почему у меня вот лично файлы не обнаруживает, не понимаю.....
Даже мой исправлений вариант ?

да ваш тоже


Добавлено:
Сообщение автоматически объединено:

вот что мне выдает консоль хотя все до поиска файлов работает у меня. файлы вообще никакие не видит

Код:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "G:\dfry.au3"    
log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.
log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.
 

Kasper

Знающий
Сообщения
70
Репутация
8
Re: [Файловая система] Скрипт не видит файлы через SelectFolder + как разграничить msgbox для файло

Код:
#include <File.au3>
#include <Array.au3>

$FileList=_FileListToArray(@DesktopDir&'\123', "*txt")
If @error=4 Then
    MsgBox (0,"","Файлы/папки не найдены.")
    Exit
EndIf
_ArrayDisplay($FileList,"$FileList")
For $i = 1 To $FileList[0]
$nFile = StringSplit($FileList[$i],'.')
$sFile = FileOpen(@DesktopDir&'\123\'&$FileList[$i], 0)
$sText = FileRead($sFile)
StringReplace($sText, '1', '')
$MsgBox = MsgBox(1, $FileList[$i],'_______________________________________'&@CRLF&'| Имя файла без расширения '&$nFile[1]&'  |'&@CRLF&'|_____________________________________ |'&@CRLF&'|Ответов с 1 баллом                           |'&@CRLF&'|     '&@extended&'                                                      |'&@CRLF&'|______________________________________|')
StringReplace($sText, '2', '')
$MsgBox = MsgBox(1, $FileList[$i],'_______________________________________'&@CRLF&'| Имя файла без расширения '&$nFile[1]&'  |'&@CRLF&'|_____________________________________ |'&@CRLF&'|Ответов с 2 баллом                           |'&@CRLF&'|     '&@extended&'                                                      |'&@CRLF&'|______________________________________|')
StringReplace($sText, '0', '')
$MsgBox = MsgBox(1, $FileList[$i],'_______________________________________'&@CRLF&'| Имя файла без расширения '&$nFile[1]&'  |'&@CRLF&'|_____________________________________ |'&@CRLF&'|Ответов с 0 баллом                           |'&@CRLF&'|     '&@extended&'                                                      |'&@CRLF&'|______________________________________|')
If $MsgBox = 2 Then ExitLoop
Next
 
Верх