|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] генерация fileinstall |
|
[решено] генерация fileinstall
|
Старожил Сообщения: 398 |
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте очередной раз!
Мне опять понадобилась помощь. Нужна программка на автоите которая бы генерировала код на автоите следующего характера: Допустим есть папка тест в ней несколько файлов, после указания программе этой папки она должна сгенерировать следующее: FileInstall("test_name\file1", $test_var & "\test_name\file1", 1) FileInstall("test_name\file2", $test_var & "\test_name\file2", 1) FileInstall("test_name\file3", $test_var & "\test_name\file3", 1) тогда должно получиться так: а не так: Помогите пожалуйста. Как можно такое реализовать? |
|
------- Отправлено: 02:41, 30-03-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать #region: - Option Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion #region: - Include #include <Array.au3> #endregion Global $test_var, $aFilesList Global $sDirPath = @WindowsDir & '\help' $aFilesList = _CreateInstalFilesList($sDirPath, '*.*') Switch @Error Case 0 _ArrayDisplay($aFilesList, '$aFilesList') _WriteToNotepad($aFilesList) Case -1 MsgBox(64, 'Внимание', 'В папке назначения нет искомых файлов') Case 1 MsgBox(64, 'Внимание', 'Ошибка определения нового пути назначения') EndSwitch Func _CreateInstalFilesList($sDirFromPath, $sFilesMask) Global $hSearch, $sFile, $sFilePath, $aResult[1] $aResult[0] = 0 If StringRight($sDirFromPath, 1) == '\' Then $sDirFromPath = StringTrimRight($sDirFromPath, 1) $hSearch = FileFindFirstFile($sDirFromPath & '\' & $sFilesMask) If $hSearch == -1 Then ;~ MsgBox(64, 'Внимание', 'В папке назначения нет искомых файлов') SetError(-1) Return -1 EndIf $sFilePath = StringSplit($sDirFromPath, '\') If @Error == 1 Then ;~ MsgBox(64, 'Внимание', 'Ошибка определения нового пути назначения') SetError(1) Return 1 Else $sFilePath = $sFilePath[$sFilePath[0]] EndIf While 1 $sFile = FileFindNextFile($hSearch) If @Error Then ExitLoop If NOT StringInStr(FileGetAttrib($sDirFromPath & '\' & $sFile), 'D') Then $aResult[0] += 1 ReDim $aResult[$aResult[0]+1] $aResult[$aResult[0]] = 'FileInstall("' & $sFilePath & '\' & $sFile & '", $test_var & ' & '"\' & $sFilePath & '\' & $sFile & '", 1)' EndIf WEnd FileClose($hSearch) SetError(0) Return $aResult EndFunc Func _WriteToNotepad(ByRef $aFilesList) Local $iPid, $iHwd, $i, $sFilesList $iPid = Run('notepad.exe') While 1 $iHwd = _ProcessGetWindow($iPid) If IsHWnd($iHwd) Then ExitLoop WEnd WinWait($iHwd) For $i=1 To $aFilesList[0] $sFilesList &= $aFilesList[$i] If $i < $aFilesList[0] Then $sFilesList &= @CRLF Next ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sFilesList) EndFunc Func _ProcessGetWindow($iPID, $iRet=1) Local $aWinList = WinList() Local $aRet[2] If IsString($iPID) Then $iPID = ProcessExists($iPID) For $i = 1 To UBound($aWinList)-1 If WinGetProcess($aWinList[$i][1]) = $iPID Then $aRet[0] = $aWinList[$i][0] ;Title $aRet[1] = $aWinList[$i][1] ;WinHandle If $iRet = 0 Then Return $aRet[0] If $iRet = 1 Then Return $aRet[1] Return $aRet EndIf Next Return SetError(1, 0, $aRet) EndFunc |
------- Отправлено: 03:44, 30-03-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо всё отлично. Только вот видел бы он ещё вложенные папки и в них тоже самое.
|
------- Отправлено: 12:32, 30-03-2009 | #3 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать #region: - Option Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion #region: - Include ;~ #include <Array.au3> #endregion Local $aFilesList Local $sDirWhereSerchPath = @WindowsDir & '\help' $aFilesList = _GetDirFilesList($sDirWhereSerchPath, '*.*') If @Error == -1 Then MsgBox(32, 'Внимание', 'В папке назначения нет искомых файлов') Exit EndIf ;~ _ArrayDisplay($aFilesList) $aFilesList = _CreateFilesList($sDirWhereSerchPath, $aFilesList) Switch @Error Case -1 MsgBox(32, 'Внимание', 'Ошибка создания списка:' & @CRLF & 'переданный параметр не массив') Exit Case 1 MsgBox(32, 'Внимание', 'Ошибка определения нового пути назначения') Exit EndSwitch ;~ _ArrayDisplay($aFilesList) _WriteToNotepad($aFilesList) Func _GetDirFilesList($sStartDirPath, $sFilesMask, $iAddFiles=1, $iAddDirs=0, $sRootPath=1) $sStartDirPath = StringRegExpReplace($sStartDirPath, '\\+$', '') Local $aRetArray[1], $aSubDirsArr, $sFindNextFile, $sCurrentPath, $iYesAdd Local $sFindFirstFile = FileFindFirstFile($sStartDirPath & '\' & $sFilesMask) If @error = 1 Then Return SetError(-1) If $sRootPath == 1 AND $iAddDirs == 1 Then $aRetArray[0] += 1 ReDim $aRetArray[2] $aRetArray[1] = $sStartDirPath EndIf While 1 $sFindNextFile = FileFindNextFile($sFindFirstFile) If @error = 1 Then ExitLoop $sCurrentPath = $sStartDirPath & '\' & $sFindNextFile $iYesAdd = 0 If StringInStr(FileGetAttrib($sCurrentPath), 'D') Then If $iAddDirs == 1 Then $iYesAdd = 1 Else If $iAddFiles == 1 Then $iYesAdd = 1 EndIf If $iYesAdd == 1 Then $aRetArray[0] += 1 ReDim $aRetArray[$aRetArray[0]+1] $aRetArray[$aRetArray[0]] = $sCurrentPath EndIf $aSubDirsArr = _GetDirFilesList($sCurrentPath, $sFilesMask, $iAddFiles, $iAddDirs, 0) If IsArray($aSubDirsArr) Then For $i = 1 To $aSubDirsArr[0] $aRetArray[0] += 1 ReDim $aRetArray[$aRetArray[0]+1] $aRetArray[$aRetArray[0]] = $aSubDirsArr[$i] Next EndIf WEnd FileClose($sFindFirstFile) SetError(0) Return $aRetArray EndFunc Func _CreateFilesList($sStartDirPath, $aFilesPath) If NOT IsArray($aFilesPath) Then Return SetError(1) Local $i, $aResult[1], $sFilePath $aResult[0] = 0 If StringRight($sStartDirPath, 1) == '\' Then $sStartDirPath = StringTrimRight($sStartDirPath, 1) $sStartDirPath = StringSplit($sStartDirPath, '\') If @Error == -1 Then Return SetError(-1) $sStartDirPath = $sStartDirPath[$sStartDirPath[0]-1] & '\' & $sStartDirPath[$sStartDirPath[0]] For $i=1 To $aFilesPath[0] $sFilePath = StringRegExpReplace($aFilesPath[$i], '.*(\\' & StringReplace($sStartDirPath, '\', '\\') & ')', '\1', 1) $aResult[0] += 1 ReDim $aResult[$aResult[0]+1] $aResult[$aResult[0]] = 'FileInstall("' & $sStartDirPath & '", $test_var & ' & '"' & $sFilePath & '", 1)' Next Return $aResult EndFunc Func _WriteToNotepad(ByRef $aFilesList) Local $iPid, $iHwd, $i, $sFilesList $iPid = Run('notepad.exe') While 1 $iHwd = _ProcessGetWindow($iPid) If IsHWnd($iHwd) Then ExitLoop WEnd WinWait($iHwd) For $i=1 To $aFilesList[0] $sFilesList &= $aFilesList[$i] If $i < $aFilesList[0] Then $sFilesList &= @CRLF Next ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sFilesList) EndFunc Func _ProcessGetWindow($iPID, $iRet=1) Local $aWinList = WinList() Local $aRet[2] If IsString($iPID) Then $iPID = ProcessExists($iPID) For $i = 1 To UBound($aWinList)-1 If WinGetProcess($aWinList[$i][1]) = $iPID Then $aRet[0] = $aWinList[$i][0] ;Title $aRet[1] = $aWinList[$i][1] ;WinHandle If $iRet = 0 Then Return $aRet[0] If $iRet = 1 Then Return $aRet[1] Return $aRet EndIf Next Return SetError(1, 0, $aRet) EndFunc |
------- Отправлено: 18:53, 30-03-2009 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Генерация комбинаций | morgan1991 | AutoIt | 13 | 29-01-2009 23:33 | |
[решено] JavaScript. Генерация html-кода. | System Failure | Вебмастеру | 3 | 20-07-2007 15:28 | |
генерация новых ключей для ikey | rivera | Защита компьютерных систем | 0 | 19-01-2006 09:49 | |
Генерация кода <a>. Perl. | benya | Вебмастеру | 1 | 18-08-2005 19:54 |
|