Есть каталог-родитель,в нем каталоги
D:\transfer\gruz\01004
D:\transfer\gruz\01005
D:\transfer\gruz\01006
D:\transfer\gruz\01007
D:\transfer\gruz\0101
D:\transfer\gruz\01010
D:\transfer\gruz\01011
D:\transfer\gruz\01012
D:\transfer\gruz\01013
D:\transfer\gruz\01014
и т.д.
Список каталогов прилагается.
Есть файл EXEL c таблицей(см.приложения)
Задача:Взять значение 1 строки,1 столбца и узнать существует ли каталог с таким именем.
Если "ДА" перейти к 2 строке,если "НЕТ"-удалить эту строку в EXEL файле.
Проблема: В начале имен катологов есть "Нули",и их к-во разное
Думаю,что надо использовать String-функции,но как не пойму.
Заранее,спасибо!
D:\transfer\gruz\01004
D:\transfer\gruz\01005
D:\transfer\gruz\01006
D:\transfer\gruz\01007
D:\transfer\gruz\0101
D:\transfer\gruz\01010
D:\transfer\gruz\01011
D:\transfer\gruz\01012
D:\transfer\gruz\01013
D:\transfer\gruz\01014
и т.д.
Список каталогов прилагается.
Есть файл EXEL c таблицей(см.приложения)
Задача:Взять значение 1 строки,1 столбца и узнать существует ли каталог с таким именем.
Если "ДА" перейти к 2 строке,если "НЕТ"-удалить эту строку в EXEL файле.
Проблема: В начале имен катологов есть "Нули",и их к-во разное
Думаю,что надо использовать String-функции,но как не пойму.
Заранее,спасибо!
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Process.au3>
#include <Date.au3>
#include <Excel.au3>
#include <Array.au3>
#Include <WinAPIEx.au3>
#include <GDIPlus.au3>
#include <FileConstants.au3>
;==========================================================================================
;Предустановки:События в Интерфейсе,Координаты в клиентском окне
Opt("GUIOnEventMode", 1)
Opt("MouseCoordMode", 2)
Opt('MustDeclareVars', 1)
Opt("TrayIconDebug", 1)
;==========================================================================================
;==========================================================================================
#Region ### START Koda GUI section ###
Global $Form1 = GUICreate("Проверка каталогов", 363, 182, 326, 266)
Global $Group1 = GUICtrlCreateGroup("Настройки", 8, 0, 345, 89)
Global $Input1 = GUICtrlCreateInput("", 80, 24, 193, 21)
Global $Input2 = GUICtrlCreateInput("", 80, 56, 193, 21)
Global $Button1 = GUICtrlCreateButton("Выбрать...", 280, 24, 65, 25)
Global $Button2 = GUICtrlCreateButton("Выбрать...", 280, 56, 65, 25)
Global $Label1 = GUICtrlCreateLabel("Exel база:", 24, 24, 54, 17)
Global $Label2 = GUICtrlCreateLabel("Каталог:", 24, 56, 48, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Progress1 = GUICtrlCreateProgress(8, 136, 345, 33)
Global $Button3 = GUICtrlCreateButton("Запуск проверки", 120, 96, 129, 25)
GUICtrlSetOnEvent($Button1, "GetImgPath")
GUICtrlSetOnEvent($Button2, "GetImgPath2")
GUICtrlSetOnEvent($Button3, "Submit")
GUIRegisterMsg($WM_SYSCOMMAND, 'WM_SYSCOMMAND')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Global $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;=========================================================================================
;Пауза,Выход и закрытие по HotKey
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{Esc}", "eExit")
Func TogglePause();Функция паузы
$Paused = NOT $Paused
While $Paused
sleep(50)
ToolTip('Скрипт "Остановлен"',0,0)
WEnd
ToolTip("")
EndFunc
Func eExit();Функция выхода
ProcessClose("EXCEL.exe")
Exit 0
EndFunc
;=========================================================================================
Func WM_SYSCOMMAND($hWnd, $iMsg, $wParam, $lParam)
Switch $wParam
Case 0xF060 ; SC_CLOSE
Exit
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
;=========================================================================================
;Функция получения полного пути к Exel сводной
Func GetImgPath()
Global $sFile = FileOpenDialog("Выберите Файл Exel", @DesktopDir, "Маска (*.xls)", 1)
If Not @error Then GUICtrlSetData($Input1, $sFile)
EndFunc
;=========================================================================================
;Функция получения полного пути к дириктории с фото
Func GetImgPath2()
Global $sFile2 = FileSelectFolder('Выберите папку с фото', '', 3, @DesktopDir, $Form1)&"\"
If Not @error Then GUICtrlSetData($Input2, $sFile2)
EndFunc
;==========================================================================================
;Функция "Запуск"
Func Submit()
If ProcessExists('EXCEL.exe') Then
ProcessClose("EXCEL.exe")
EndIf
If @error Then
MsgBox(16, 'Error', '_ExcelBookOpen')
Exit
EndIf
;========================================================
;Проверка Log файла:если есть удалить ;
If FileExists(@ScriptDir&"\Log.txt") Then ;
FileDelete(@ScriptDir&"\Log.txt") ;
EndIf ;
;========================================================
;==========================================================================================
;Проверки заполнения Формы GUI
Global $PutXLS=GUICtrlRead($Input1)
Global $PutFoto=GUICtrlRead($Input2)
If $PutXLS="" Then
MsgBox(16, 'Error',"Не указан путь до EXEL базы!")
Return GUICtrlSetOnEvent($Button3, "Submit")
EndIf
If $PutFoto="" Then
MsgBox(16, 'Error',"Не указан путь до католога с фото!")
Return GUICtrlSetOnEvent($Button3, "Submit")
EndIf
;==========================================================================================
;FileCopy($sFile, StringRegExpReplace($sFile, '^.*\\(.*(\.)(.*)|.*)$', StringReplace($sFile, '\', '\\') & '\2\3'),$FC_OVERWRITE)
;==========================================================================================
;Запускаем Exel и получаем его title
;открываем в скрытом режиме
;global $fVisible = 0
;только для чтения
;global $fReadOnly = True
Local $oExcel = _ExcelBookOpen($sFile)
WinWait("[CLASS:XLMAIN]")
global $sTitleExel = WinGetTitle("[ACTIVE]")
sleep(100)
;Активируем Exel
WinActivate($sTitleExel)
WinWaitActive($sTitleExel)
;Номер последней строчки
global $max_row = $oExcel.ActiveSheet.UsedRange.Rows.Count
;Прочитать колонку ячеек
Local $aArray1 = _ExcelReadArray($oExcel, 1, 5, $max_row, 1, 1)
;_ArrayDisplay($aArray1, "Vertical")столбец
global $column = 1
;строка
global $row = 2 ;Начальная строка!
Global $search_cell = $oExcel.Activesheet.Cells($row, $column).Value
;запись положительного результата поиска
global $write_row_num[$max_row +1]
;последняя запись положительного результата
global $last_row_num = 1
;=================================================================================================================
;Начало основных манипуляций
Do
global $max_row = $oExcel.ActiveSheet.UsedRange.Rows.Count
if $search_cell <> "" and $search_cell <> " ----" then
;запись положительного результата поиска
$write_row_num[$last_row_num] = $row
;переход к следующей ячейке для записи результата
$last_row_num = $last_row_num + 1
EndIf
$search_cell = $oExcel.Activesheet.Cells($row, $column).Value
If FileExists($sFile2&"0"&$search_cell)=0 Then
_ExcelRowDelete($oExcel,$row,1)
FileWrite(@ScriptDir & "\Log.txt",$search_cell & " - удалил! :(" & @CRLF)
EndIf
If FileExists($sFile2&"0"&$search_cell)=1 Then
FileWrite(@ScriptDir & "\Log.txt",$search_cell & " - OK!" & @CRLF)
;переход к следующей ячейке для поиска в столбце
$row = $row + 1
EndIf
Until $row = $max_row
_ExcelBookSaveAs($oExcel, @ScriptDir & "\Обработанный.xls", "xls", 0, 1)
_ExcelBookClose($oExcel)
MsgBox(4096, "Закончили!", "Все сделано!=)"& @CR &"Посмотрите Log.txt!")
eExit()
EndFunc