Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? (http://forum.oszone.net/showthread.php?t=134689)

Pozia 14-03-2009 02:54 1063264

Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте?
 
В Total Commander есть файл DEFAULT.bar в котором прописаны все пути к ярлыкам запускаемых файлов. Вот содержание моего:

Код:

[Buttonbar]
Buttoncount=78
button1=%COMMANDER_PATH%\ICO\ICONVISTA\Поверх.ico
cmd1=%COMMANDER_PATH%\Utilites\Screpka.exe
path1=%COMMANDER_PATH%\Utilites\
menu1=Поверх всех окон
button2=%COMMANDER_PATH%\ICO\ICONVISTA\Мой компьютер.ico
cmd2=cm_OpenDrives
menu2=Мой компьютер
button3=%COMMANDER_PATH%\ICO\ICONVISTA\Документы пользователя.ico
cmd3=cd %USERPROFILE%
menu3=Папка пользователя
button4=%COMMANDER_PATH%\ICO\ICONVISTA\Документы.ico
cmd4=cd %$PERSONAL%
menu4=Мои документы
button5=%COMMANDER_PATH%\ICO\ICONVISTA\Корзина.ico
cmd5=cm_OpenRecycled
menu5=Корзина
button6=%COMMANDER_PATH%\ICO\ICONVISTA\Скрытые.ico
cmd6=cm_SwitchHidSys
menu6=Скрытые/системные файлы
button7=%COMMANDER_PATH%\ICO\bar01.dll,16
cmd7=cm_SearchFor
menu7=Поиск
button8=%COMMANDER_PATH%\ICO\bar01.dll,20
cmd8=cm_SetAttrib
menu8=Изменить аттрибуты
button9=%COMMANDER_PATH%\ICO\ICONVISTA\Диспетчер устройств.ico
cmd9=%windir%\SYSTEM32\devmgmt.msc
menu9=Диспетчер устройств
button10=%COMMANDER_PATH%\ICO\ICONVISTA\Управление.ico
cmd10=%windir%\SYSTEM32\compmgmt.msc
menu10=Управление компьютером
button11=%COMMANDER_PATH%\ICO\bar02.dll,23
cmd11=regedit.exe
menu11=Редактор реестра
button12=C:\Program Files\Regshot\Regshot.exe
cmd12=""C:\Program Files\Regshot\Regshot.exe""
path12=C:\Program Files\Regshot\
menu12=Regshot 2.0.1.66 unicode
button13=%COMMANDER_PATH%\ICO\ICONVISTA\DOC.ico
cmd13=cmd.exe
menu13=Командная строка
button14=%COMMANDER_PATH%\ICO\ICONVISTA\Диспетчер задач.ico
cmd14=taskmgr.exe
menu14=Диспетчер задач
button15=C:\Program Files\Lavalys\EVEREST Ultimate Edition\everest.exe
cmd15=C:\Program Files\Lavalys\EVEREST Ultimate Edition\everest.exe
path15=C:\Program Files\Lavalys\EVEREST Ultimate Edition\
menu15=EVEREST Ultimate Edition 5.00.1650
button16=C:\Program Files\TuneUp Utilities 2009\Integrator.exe
cmd16=C:\Program Files\TuneUp Utilities 2009\Integrator.exe
path16=C:\Program Files\TuneUp Utilities 2009\
menu16=TuneUp Utilities 2009 8.0.2000
button17=C:\Program Files\Deafrag\Defrag.exe
cmd17=C:\Program Files\Deafrag\Defrag.exe
path17=C:\Program Files\Deafrag\
menu17=TuneUp Deafrag 2009 8.0.2000
button18=C:\Program Files\CCleaner\ccleaner.exe
cmd18=C:\Program Files\CCleaner\ccleaner.exe
path18=C:\Program Files\CCleaner\
menu18=CCleaner 2.15.815
button19=C:\Program Files\TouchStoneSoftware\UndeletePlus\undelete_plus.exe
cmd19=C:\Program Files\TouchStoneSoftware\UndeletePlus\undelete_plus.exe
path19=C:\Program Files\TouchStoneSoftware\UndeletePlus\
menu19=UndeletePlus 2.9.7.0
button20=%COMMANDER_PATH%\Utilites\SFX Tool\Button.exe
cmd20=Button.exe
param20=%L
path20=%COMMANDER_PATH%\Utilites\SFX Tool\
menu20=7z SFX archive tool #12.3
button21=%COMMANDER_PATH%\ICO\bar01.dll,28
cmd21=cm_CRCcreate
menu21=Создать контрольные суммы CRC
button22=%COMMANDER_PATH%\ICO\bar01.dll,29
cmd22=cm_CRCcheck
menu22=Проверить контрольные суммы CRC
button23=%COMMANDER_PATH%\ICO\bar01.dll,12
cmd23=cm_IntCompareFilesByContent
menu23=Сравнить файлы по содержимому
button24=C:\Program Files\AutoCAD 2007\acad.exe
cmd24=C:\Program Files\AutoCAD 2007\acad.exe
path24=C:\Program Files\AutoCAD 2007\
menu24=AutoCAD 2007
button25=C:\WINDOWS\system32\mspaint.exe
cmd25=C:\WINDOWS\system32\mspaint.exe
path25=C:\WINDOWS\system32\
menu25=MS Paint 5.1
button26=C:\Program Files\Advanced Grapher\AGrapher.exe
cmd26=C:\Program Files\Advanced Grapher\AGrapher.exe
path26=C:\Program Files\Advanced Grapher\
menu26=Advanced Grapher 2.11
button27=C:\PROGRA~1\Mathcad\Mathcad.exe
cmd27=C:\Program Files\Mathcad\Mathcad.exe
path27=C:\Program Files\Mathcad\
menu27=Mathcad 13.1 (604040953)
button28=C:\Program Files\ABBYY FineReader 9.0\FineReader.exe
cmd28=C:\Program Files\ABBYY FineReader 9.0\FineReader.exe
path28=C:\Program Files\ABBYY FineReader 9.0\
menu28=ABBYY FineReader Professional Edition 9.0.0.662 (5581)
button29=C:\Program Files\Office2003\OFFICE11\WINWORD.EXE
cmd29=""C:\Program Files\Office2003\OFFICE11\WINWORD.EXE""
path29=C:\Program Files\Office2003\OFFICE11\
menu29=WORD 2003
button30=C:\Program Files\Office2003\OFFICE11\EXCEL.EXE
cmd30=""C:\Program Files\Office2003\OFFICE11\EXCEL.EXE""
path30=C:\Program Files\Office2003\OFFICE11\
menu30=EXCEL 2003
button31=C:\Program Files\Office2007\Office12\WINWORD.EXE
cmd31=""C:\Program Files\Office2007\Office12\WINWORD.EXE""
path31=C:\Program Files\Office2007\Office12\
menu31=WORD 2007
button32=C:\Program Files\Office2007\Office12\EXCEL.EXE
cmd32=""C:\Program Files\Office2007\Office12\EXCEL.EXE""
path32=C:\Program Files\Office2007\Office12\
menu32=EXCEL 2007
button33=C:\Program Files\Winamp\Winamp.exe,3
cmd33=C:\Program Files\Winamp\Winamp.exe
path33=C:\Program Files\Winamp\
menu33=Winamp 5.541
button34=C:\Program Files\Windows Media Player\wmplayer.exe
cmd34=C:\Program Files\Windows Media Player\wmplayer.exe
path34=C:\Program Files\Windows Media Player\
menu34=Windows Media Player 11.0.5721.5246
button35=C:\Program Files\CyberLink\PowerDVD8\PowerDVD8.exe
cmd35=""C:\Program Files\CyberLink\PowerDVD8\PowerDVD8.exe""
path35=C:\Program Files\CyberLink\PowerDVD8\
menu35=PowerDVD Ultra 8.0.1830.50
button36=C:\Program Files\Light Alloy\LA.exe
cmd36=""C:\Program Files\Light Alloy\LA.exe""
path36=C:\Program Files\Light Alloy\
menu36=Light Alloy 4.4 (784)
button37=C:\Program Files\VLC\vlc.exe
cmd37=C:\Program Files\VLC\vlc.exe
path37=C:\Program Files\VLC\
menu37=VLC media player 0.9.4
button38=C:\Program Files\Wavosaur\Wavosaur.exe
cmd38=C:\Program Files\Wavosaur\Wavosaur.exe
path38=C:\Program Files\Wavosaur\
menu38=Wavosaur 1.0.3.0
button39=C:\Program Files\TagRename\TagRename.exe
cmd39=C:\Program Files\TagRename\TagRename.exe
path39=C:\Program Files\TagRename\
menu39=TagRename 3.4.5
button40=C:\Program Files\Movie Maker\moviemk.exe
cmd40=""C:\Program Files\Movie Maker\moviemk.exe""
path40=C:\Program Files\Movie Maker\
menu40=Movie Maker 2.6.4037.0
button41=C:\Program Files\ACD Systems\ACDSee\11.0\ACDSeeSR.exe
cmd41=C:\Program Files\ACD Systems\ACDSee\11.0\ACDSee11.exe
path41=C:\Program Files\ACD Systems\ACDSee\11.0\
menu41=ACDSee Photo Manager 11.0 (85)
button42=C:\Program Files\FSViewer\FSViewer.exe
cmd42=C:\Program Files\FSViewer\FSViewer.exe
path42=C:\Program Files\FSViewer\
menu42=FastStone Image Viewer 3.2
button43=C:\Program Files\ESMA Ltd\CityInfo\CityInfo.exe,2
cmd43=C:\Program Files\ESMA Ltd\CityInfo\CityInfo.exe
path43=C:\Program Files\ESMA Ltd\CityInfo\
menu43=CityInfo 2.7.0.58
button44=C:\Program Files\Bases-09\MegaContacts.exe
cmd44=C:\Program Files\Bases-09\MegaContacts.exe
path44=C:\Program Files\Bases-09\
menu44=Телефонный справочник СНГ 2007 3.6.1.40
button45=C:\Program Files\AlarmNP\AlarmNP.exe
cmd45=C:\Program Files\AlarmNP\AlarmNP.exe
path45=C:\Program Files\AlarmNP\
menu45=AlarmNP 1.16
button46=%COMMANDER_PATH%\ICO\ICONVISTA\Флешка.ico
cmd46=hidcon.exe %COMMANDER_PATH%\PLUGINS\Media\DevEject\DevEject.exe -EjectDrive:n:
path46=%COMMANDER_PATH%\PLUGINS\Media\DevEject\
menu46=Отключение флешки
button47=%COMMANDER_PATH%\ICO\ICONVISTA\DVD.ico
cmd47=C:\WINDOWS\CDEject.exe
path47=C:\WINDOWS\
menu47=Извлечь/Вставить DVD привод
button48=C:\Program Files\Alcohol Soft\Alcohol 120\Alcohol.exe
cmd48=C:\Program Files\Alcohol Soft\Alcohol 120\Alcohol.exe
path48=C:\Program Files\Alcohol Soft\Alcohol 120\
menu48=Alcohol 120% 1.9.8 (7117)
button49=C:\Program Files\UltraISO\UltraISO.exe
cmd49=C:\Program Files\UltraISO\UltraISO.exe
path49=C:\Program Files\UltraISO\
menu49=UltraISO 9.3.0.2612 PE
button50=C:\Program Files\Nero\Nero8\Nero StartSmart\NeroStartSmart.exe
cmd50=C:\Program Files\Nero\Nero8\Nero StartSmart\NeroStartSmart.exe
path50=C:\Program Files\Nero\Nero8\Nero StartSmart\
menu50=Nero StartSmart 8.3.6.0
button51=C:\Program Files\Nero\Nero Core\nero.exe
cmd51=C:\Program Files\Nero\Nero Core\nero.exe
path51=C:\Program Files\Nero\Nero Core\
menu51=Nero Micro 8.3.2.1
button52=C:\Program Files\InfraRecorder\InfraRecorder.exe
cmd52=C:\Program Files\InfraRecorder\InfraRecorder.exe
path52=C:\Program Files\InfraRecorder\
menu52=InfraRecorder 0.45
button53=C:\Program Files\NSCOPY\nscopy.exe
cmd53=C:\Program Files\NSCOPY\nscopy.exe
path53=C:\Program Files\NSCOPY\
menu53=Non-Stop Copy 1.04
button54=C:\Program Files\ESET\ESET Smart Security\egui.exe,1
cmd54=C:\Program Files\ESET\ESET Smart Security\egui.exe
path54=C:\Program Files\ESET\ESET Smart Security\
menu54=ESET Smart Security BE 4.0.314
button55=C:\Program Files\Nokia\Nokia PC Suite 7\PCSuite.exe
cmd55=C:\Program Files\Nokia\Nokia PC Suite 7\PCSuite.exe
path55=C:\Program Files\Nokia\Nokia PC Suite 7\
menu55=Nokia PC Suite 7.1.18.0
button56=C:\Program Files\Nokia\Nokia PC Suite 7\PcSync2.exe
cmd56=C:\Program Files\Nokia\Nokia PC Suite 7\PcSync2.exe
path56=C:\Program Files\Nokia\Nokia PC Suite 7\
menu56=PcSync2
button57=C:\Program Files\Прогноз погоды\weather.exe
cmd57=C:\Program Files\Прогноз погоды\weather.exe
path57=C:\Program Files\Прогноз погоды\
menu57=Прогноз погоды 2.0
button58=C:\Program Files\QIP\qip.exe
cmd58=C:\Program Files\QIP\qip.exe
path58=C:\Program Files\QIP\
menu58=QIP 2005 8080
button59=C:\Program Files\NetLook\NetLook.exe
cmd59=C:\Program Files\NetLook\NetLook.exe
path59=C:\Program Files\NetLook\
menu59=NetLook 2.3
button60=C:\Program Files\Internet Explorer\iexplore.exe
cmd60=""C:\Program Files\Internet Explorer\iexplore.exe""
path60=C:\Program Files\Internet Explorer\
menu60=Internet Explorer 7.0.5730.13
button61=C:\Program Files\Opera\Opera.exe
cmd61=""C:\Program Files\Opera\Opera.exe""
path61=C:\Program Files\Opera\
menu61=Opera 9.63 (10476)
button62=C:\Program Files\Windows Live\Mail\wlmail.exe
cmd62=""C:\Program Files\Windows Live\Mail\wlmail.exe""
path62=C:\Program Files\Windows Live\Mail\
menu62=Почта Windows Live
button63=C:\Program Files\Download Master\dmaster.exe
cmd63=""C:\Program Files\Download Master\dmaster.exe""
path63=C:\Program Files\Download Master\
menu63=Download Master 5.5.9.1155
button64=C:\Program Files\Google Earth Pro\GoogleEarthPro.exe
cmd64=C:\Program Files\Google Earth Pro\GoogleEarthPro.exe
path64=C:\Program Files\Google Earth Pro\
menu64=Google Earth Pro 4.2.205.5730
button65=%COMMANDER_PATH%\ICO\bar01.dll,21
cmd65=cm_FtpNew
menu65=Новое FTP-соединение
button66=%COMMANDER_PATH%\ICO\bar01.dll,22
cmd66=cm_FtpConnect
menu66=Подключиться по FTP
button67=C:\Program Files\FlylinkDC++\FlylinkDC.exe
cmd67=""C:\Program Files\FlylinkDC++\FlylinkDC.exe""
path67=C:\Program Files\FlylinkDC++\
menu67=FlylinkDC++ (r361)
button68=C:\Program Files\SipDiscount.com\SipDiscount\SipDiscount.exe
cmd68=""C:\Program Files\SipDiscount.com\SipDiscount\SipDiscount.exe""
path68=C:\Program Files\SipDiscount.com\SipDiscount\
menu68=Moroko SipDiscount 4.02 (492)
button69=c:\Program Files\Nonoh.net\Nonoh\Nonoh.exe
cmd69=""c:\Program Files\Nonoh.net\Nonoh\Nonoh.exe""
path69=c:\Program Files\Nonoh.net\Nonoh\
menu69=Moroko Nonoh 4.02 (523)
button70=C:\Program Files\Skype\Phone\Skype.exe
cmd70=""C:\Program Files\Skype\Phone\Skype.exe""
path70=C:\Program Files\Skype\Phone\
menu70=Skype 4.0.0.206
button71=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd71=cd \\10.16.10.5
menu71=Netberry 10.16.10.5
button72=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd72=cd \\10.16.0.5
menu72=Silver 10.16.0.5
button73=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd73=cd \\10.16.24.5
menu73=Samba 10.16.24.5
button74=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd74=cd \\10.16.34.5
menu74=Fileserver 10.16.34.5
button75=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd75=cd \\10.16.56.5
menu75=DriveNet 10.16.56.5
button76=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd76=cd \\10.16.20.1
menu76=10.16.20.1
button77=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd77=cd \\10.16.97.1
menu77=Atlantis Server (10.16.97.1)
button78=%COMMANDER_PATH%\ICO\ICONVISTA\Сеть.ico
cmd78=cd \\10.16.97.174
menu78=Апосталы (10.16.97.174)

Нужен скрипт который будет проверять наличие установленной в системе программы и если она не установлена то скрипт удалит соответствующие записи о ней из DEFAULT.bar. Напрмер: Скрипт проверяет наличие Light Alloy. Если файл LA.exe по пути C:\Program Files\Light Alloy\ есть то скрипт переходит к проверке следующей программы, если файла нет то удаляются строки в DEFAULT.bar под номером 129, 130, 131, 132. Так как строки в первый запуск скрипта имеют определенное исходное положение то можно удалять строки по их номеру без точного поиска нужной строки.

Такая задумка вообще реально средствами АвтоИт???

proxy 14-03-2009 05:05 1063285

Код:

#region: - Include
    #include <GUIConstantsEx.au3>
    #Include <Misc.au3>
    #include <WindowsConstants.au3>
#endregion

#region: - Option

    Opt('GUIOnEventMode',      1)
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',        0)
#endregion

#region: - Global: Название и версия программы, ProID

    Global  $sProName, $sProVer, $sProNameVer
            $sProName
    = 'TotalCmd Helper'
            $sProVer      = 'v1.0'
#endregion

#region: - Одна копия программы

    If _Singleton($sProNameVer & ' [ID] ' & $sProNameVer, 1) == 0 Then
        WinActivate('[CLASS:AutoIt v3 GUI; TITLE:' & $sProName & ']')
    Exit
EndIf

#endregion

#region: - Global

    Global  $hWinMain
    Global  $sFilePath, $hFilePath
            $sFilePath
= 'c:\default.bar'
    Global  $hCountLineInFile, $hNowLineInFile
    Global  $sFileResult
#endregion

#region: GUI

    $hWinMain = GUICreate($sProName, 380, 135, -1, -1)
        GUISetOnEvent($GUI_EVENT_CLOSE,    '_Pro_Exit')

    GUICtrlCreateLabel('Пусть к файлу "default.bar":', 15, 10, 170, 25)
    $hFilePath = GUICtrlCreateInput($sFilePath, 15, 25, 250, 20)
    GUICtrlCreateButton('Выбрать файл', 15+250+2, 25-1, 100, 22)
        GUICtrlSetOnEvent(-1, '_Select_File')

    $hCountLineInFile = GUICtrlCreateLabel('Всего строк в файле:', 15, 50, 165, 18)
    GUICtrlCreateLabel('Сейчас обрабатывается строка:', 15, 50+20, 165, 18)
    $hNowLineInFile = GUICtrlCreateLabel('-', 15+165+5, 50+20, 380-30, 18)

    GUICtrlCreateButton('Проверить файл', 15, 50+20+21, 150, 25)
        GUICtrlSetOnEvent(-1, '_Check_File')
    GUICtrlCreateButton('Закрыть ALT+ESC', 15+150+2, 50+20+21, 150, 25)
        GUICtrlSetOnEvent(-1, '_Pro_Exit')
#endregion

#region: - После создания всех GUI

    HotKeySet('!{ESC}', '_Pro_Exit')
    GUISetState(@SW_SHOW, $hWinMain)
#endregion

#region: - Sleep, Exit

While 1
    Sleep(10)
WEnd

Func
_Pro_Exit()
    HotKeySet('!{ESC}')
    Exit
EndFunc

#endregion

Func _Check_File()
    Local  $hFile, $iCountLineInFile, $i, $iLastNomber
    Local  $sButton, $sCmd, $sPath, $sMenu
    $iLastNomber
= 0

    $sFilePath = GUICtrlRead($hFilePath)
    If NOT FileExists($sFilePath) Then
        MsgBox(64, 'Ошибка', 'Файл обработки отсутсвует:' & @CRLF & $sFilePath)
        Return
    EndIf


    $iCountLineInFile = IniRead($sFilePath, 'Buttonbar', 'Buttoncount', '<error>')
    If $iCountLineInFile <> '<error>' Then
        GUICtrlSetData($hCountLineInFile, 'Всего строк в файле:  ' & $iCountLineInFile*4+2)
        FileDelete($sFilePath & '.BAK')
    Else
        GUICtrlSetData($hCountLineInFile, 'Всего строк в файле:  Ошибка')
        Return
    EndIf

    For
$i=1 To $iCountLineInFile
        $sButton
= IniRead($sFilePath, 'Buttonbar', 'button' & $i, '<error>')
        $sCmd = StringStripWS(StringReplace(IniRead($sFilePath, 'Buttonbar', 'cmd' & $i, '<error>'), '"', ''), 1+2)
        $sPath = IniRead($sFilePath, 'Buttonbar', 'path' & $i, '<error>')
        $sMenu = IniRead($sFilePath, 'Buttonbar', 'menu' & $i, '<error>')

        GUICtrlSetData($hNowLineInFile, $i)

        If $sCmd <> '<error>' Then
            If NOT
FileExists($sFilePath & '.BAK') Then _
                IniWrite($sFilePath & '.BAK', 'Buttonbar', 'Buttoncount', 0)

;~          MsgBox(0, $i, $sCmd)

            If FileExists($sCmd) Then
                $iLastNomber += 1
                IniWrite($sFilePath & '.BAK', 'Buttonbar', 'button' & $iLastNomber, $sButton)
                IniWrite($sFilePath & '.BAK', 'Buttonbar', 'cmd'    & $iLastNomber, $sButton)
                IniWrite($sFilePath & '.BAK', 'Buttonbar', 'path'  & $iLastNomber, $sButton)
                IniWrite($sFilePath & '.BAK', 'Buttonbar', 'menu'  & $iLastNomber, $sButton)
            EndIf
        EndIf
    Next


    IniWrite($sFilePath & '.BAK', 'Buttonbar', 'Buttoncount', $iLastNomber)
    FileCopy ($sFilePath & '.BAK', $sFilePath, 1)
    FileDelete($sFilePath & '.BAK')
    GUICtrlSetData($hNowLineInFile, 'Готово')
EndFunc

Func
_Select_File()
    Local  $sSelectFile
    $sSelectFile
= FileOpenDialog('Выбирите файл "default.bar"', @ProgramFilesDir, '(default.bar)', 1+2, 'default.bar', $hWinMain)
    If $sSelectFile == '' Then Return
    $sFilePath = $sSelectFile
    GUICtrlSetData($hFilePath, $sFilePath)
EndFunc

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

Pozia 14-03-2009 16:55 1063674

proxy, спасибо. Скрипт работает почти идеально. Из пожеланий - не нужно чтобы выскакивало окно с просьбой выбрать файл который нужно править. Пусть скрипт работает тихо. Из недостатков - некорректно обрабатывает скрипт те ярлыки, которые заданы относительно по пути - %commander_patch%\. По сути эти ярлыки вообще удалять не нужно. Они у меня в комплекте с самим тотолом ставятся и есть всегда. Можете данные нюансы подправить? Спасибо

proxy, также удаляются записи о ярлыках содержащих в командах на запуск cm_..., cd..., %windir%, комманды по типу regedit.exe. В общем нужно чтобы скрипт только обрабатывал пути progrаm files

proxy 14-03-2009 19:58 1063894

так написал же:
Цитата:

осталось только доделать обработку на проверку отнасительных путей и спец. комманд тотола
)))))))))))

просто пока кофе пил....чуть позже доработаю )))

Pozia 14-03-2009 22:04 1063996

Точно. Чет я затупил ))))) тогда жду. И не забудьте сделать чтобы работал скрипт тихо, не тревожа мой чуткий взор )))

proxy 15-03-2009 00:20 1064131

Вложений: 1
тестируй, редация: 1.0.3

Pozia 15-03-2009 00:45 1064146

proxy, Протестил. Результаты:

1. на выходе получается файл default.bar.bak а хотелось бы чтобы полученный default.bar сразу же оригинальный заменил
2. в данном случае уддалил меньше строк из тех что нужно было оставить, а именно были удалены:
-Диспетчер устройств с командой запуска %windir%\SYSTEM32\devmgmt.msc
-Панель управления - %windir%\SYSTEM32\compmgmt.msc
-Отключение флешки - hidcon.exe %COMMANDER_PATH%\PLUGINS\Media\DevEject\DevEject.exe -EjectDrive:k:
-все мои ссылки на серваки домашней сети - cd \\10.16.10.5........

proxy 15-03-2009 02:13 1064178

аа...забыл значит убрать, расскомментируй строчки:
;~ FileCopy ($sCfgFilePath & '.BAK', $sCfgFilePath, 1)
;~ FileDelete($sCfgFilePath & '.BAK')

по 2, ща подправлю..

дело в том, что все отнасительные пути такие как:
%windir%\SYSTEM32\compmgmt.msc
cd \\10.16.10.5

это все отнасительные пути - их обработку необходимо написать вручную,
потому, все необычные пути - надо будет дописывать вручную...

proxy 15-03-2009 02:35 1064190

попробуй это (пост выше):
Цитата:

тестируй, редация: 1.0.3















Вложения
TotalCmd Helper.rar[/quote]

кстати, вот такие файлы откуда беруться? где они лежат?
Цитата:

hidcon.exe %COMMANDER_PATH%\PLUGINS\Media\DevEject\DevEject.exe -EjectDrive:k:
сейчас они без проверки переписываются в новый файл,
если знаешь где они лежат - можно и проверку написать на них..

Pozia 15-03-2009 12:31 1064391

1. Осталась проблема с
Цитата:

Цитата Pozia
все мои ссылки на серваки домашней сети - cd \\10.16.10.5 »

2.
Цитата:

Цитата proxy
потому, все необычные пути - надо будет дописывать вручную... »

Подскажите подробнее как это делать чтобы сам смог.

3. И пожалуйста уберите все эти диологи. Мне бы тихий скрипт :) И если это возможно то в один все файл внесите

amel27 15-03-2009 16:18 1064552

Pozia, попробуй еще так :) :
Код:

#include <WinAPI.au3>

$sFile = "C:\TotalCmd\Default.Bar"
$sBBar = FileRead($sFile)
$sBBar = _TCMD_ButtonBarPack($sBBar)
$hFile = FileOpen($sFile, 2)
FileWrite($hFile, $sBBar)
FileClose($hFile)

Func _TCMD_ButtonBarPack($sBBar)
    Local $iBOut = 0, $sBOut = "", $sCMD, $sPath
    Local $aBBar = StringRegExp($sBBar,"(?mi)^([a-z_]+(\d+)=[^\n]*[\n\r]+(?:[a-z_]+\2=[^\n]*[\n\r]+)*)",3), $aCBar = $aBBar

    EnvSet("COMMANDER_PATH", RegRead("HKCU\Software\Ghisler\Total Commander","InstallDir"))
    For $i=0 To UBound($aBBar)-1 Step 2
        Opt("ExpandEnvStrings", 1)
        $aBBar[$i] = StringRegExpReplace($aBBar[$i],'""','"')
        $sPath = StringRegExpReplace($aBBar[$i],'(?is)^.*?(?:^|[\n\r])path\d+="*([^"%\n\r]+).*$',"\1")
        If @extended=1 And $sPath<>"" Then FileChangeDir($sPath)
        $sCMD =StringRegExpReplace($aBBar[$i],'(?is)^.*?(?:^|[\n\r])cmd\d+=(?:cm_\w|cd |"([^"%\n\r]+)"|([^":%\s\n\r\\]+)(?:[\n\r\s]|$)|([^"%\n\r]+)).*$',"\1\2\3")
        If @extended=0 Or $sCMD="" Or FileExists($sCMD) Or _WinAPI_FindExecutable($sCMD)<>"" Then
            $iBOut +=1
            Opt("ExpandEnvStrings", 0)
            $aCBar[$i] = StringRegExpReplace($aCBar[$i], '\d+=', $iBOut &'=')
            $sBOut &= $aCBar[$i]
        EndIf
    Next
    Return
"[ButtonBar]" &@CRLF& "ButtonCount="& $iBOut &@CRLF& $sBOut
EndFunc

З.Ы. Путь установки TC берется из реестра (HKCU\Software\Ghisler\Total Commander\InstallDir)

Pozia 15-03-2009 18:35 1064689

amel27, этот скрипт вообще не работает. Или его нужно использовать вписав в предыдущие?

Цитата:

Цитата amel27
Путь установки TC берется из реестра (HKCU\Software\Ghisler\Total Commander\InstallDir) »

Лучше сделайте чтобы путь можно было прописать в самом скрипте так как я тотал не устанавливаю а просто копирую из SFX архивом

proxy 15-03-2009 20:42 1064838

Цитата:

Цитата amel27
З.Ы. Путь установки TC берется из реестра (HKCU\Software\Ghisler\Total Commander\InstallDir) »

к примеру свою сбортку тоотола я уже даааавно не инсталирую, а просто переношу с системы на систему

Цитата:

3. И пожалуйста уберите все эти диологи. Мне бы тихий скрипт И если это возможно то в один все файл внесите
так для чего же там сделал область настроек??? )))))
можно настроить будет все ооочень тихо:
Показывать окно настроек: Нет
запускать при старте: Да

Если нет ошибок - снять все галочки кроме Закрыть программу

Если есть ошибки - снять все галочки кроме Закрыть программу

amel27, рег. выражения зачетные !
а про путь к тоталу - просто добавить надо самым первым и если в реестре нет - то тупа перебором

amel27, все так компактно - даже не поймешь как оно работает,
но как понимаю все меняет налету? - это крута...
а номера кнопок меняет ?

Pozia 15-03-2009 22:43 1064967

amel27, все OK!!! Указал путь к тоталу $sFile = "C:\TC\Default.Bar" и все сработало! Я ваще в шоке от Вашего скрипта. Такой маленький а так хорошо со всем справляется. Спасибо!

amel27, а как в скрипте задать относительный путь %programfiles%\TC\Default.Bar?

Pozia 15-03-2009 23:01 1064982

amel27, нашел недароботку. Удаляется кнопка 7z

amel27 16-03-2009 08:34 1065210

Цитата:

Цитата Pozia
как в скрипте задать относительный путь »

подправил - путь к Тоталу и имя BAR-файла задаются вручную, по ходу немного изменил алгоритм:
Код:

#include <WinAPI.au3>

$sRoot = @ProgramFilesDir &"\TC"
$sFile = $sRoot  &"\Default.Bar"

$sBBar = FileRead($sFile)
EnvSet("COMMANDER_PATH", $sRoot)
$sBBar = _TCMD_ButtonBarPack($sBBar)
$hFile = FileOpen($sFile, 2)
FileWrite($hFile, $sBBar)

Func _TCMD_ButtonBarPack($sBBar)
    Local $iBOut, $sBOut=@CRLF, $sCMD, $sPath, $aBBar=StringRegExp($sBBar,"(?mi)^([a-z_]+(\d+)=[^\n]*[\n\r]+(?:[a-z_]+\2=[^\n]*[\n\r]+)*)",3)
    For $i=0 To UBound($aBBar)-1 Step 2
        Opt("ExpandEnvStrings", 1)
        $sPath = StringRegExpReplace($aBBar[$i],'(?is)^.*?(?:^|[\n\r])path\d+="*([^"\n\r]+).*$',"\1")
        If @extended=1 And $sPath<>"" Then FileChangeDir($sPath)
        $sCMD =StringRegExpReplace($aBBar[$i],'(?is)^.*?(?:^|[\n\r])cmd\d+=(?:cm_|cd |"+([^"\n\r]+)"+|([^"\s\n\r\\]+)(?:[\n\r\s]|$)|([^"\n\r]+)).*$',"\1\2\3")
        If @extended=0 Or $sCMD="" Or FileExists($sCMD) Or _WinAPI_FindExecutable($sCMD)<>"" Then
            $iBOut +=1
            Opt("ExpandEnvStrings", 0)
            $sBOut &= StringReplace($aBBar[$i], $aBBar[$i+1]&'=', $iBOut &'=')
        EndIf
    Next
    Return
SetError(0, Opt("ExpandEnvStrings",0), "[ButtonBar]"&@CRLF&"ButtonCount="& $iBOut & $sBOut)
EndFunc

Цитата:

Цитата Pozia
нашел недароботку. Удаляется кнопка 7z »

странно, у меня вроде нормально - если файл Button.exe есть по указанному пути, то оставляет... кстати, скрипт среди множества встроенных CMD-команд распознает только "CD" - все другие (из длинного списка HELP) будут удалены

Pozia 16-03-2009 23:19 1065965

amel27, вот этот скрипт не удоляет кнопку. А тот удалял. Команда на запуск кнопки была просто Button.exe. Я ее переписал так %COMMANDER_PATH%\Utilites\SFX Tool\Button.exe и тогда и первый ваш скрипт правильно работал.

Хотел было написать чтобы скрипт не удалял пустые button...= так он уже и это умеет. Потрясно!!! Спасибо!!!

Pozia 21-04-2009 20:34 1100320

amel27, а как подправить скрипт чтобы он работал с файлом DEFAULT.bar который находится рядом со скриптом в одной папке??? Чет не могу сообразить

amel27, или подскажите переменную Program Files (x86) чтобы скрипт работал в вистет 64 бит нормально

amel27 22-04-2009 05:58 1100615

Цитата:

Цитата Pozia
как подправить скрипт чтобы он работал с файлом DEFAULT.bar который находится рядом со скриптом »

Код:

$sFile = @ScriptDir &"\Default.Bar"
Цитата:

Цитата Pozia
подскажите переменную Program Files (x86) чтобы скрипт работал в вистет 64 бит нормально »

скомпилировать в 32-бит и @ProgramFilesDir будет возвращать "C:\Program Files (x86)"

Pozia 22-04-2009 07:45 1100639

amel27, а как быть с $sRoot? Ведь она есть здесь: EnvSet("COMMANDER_PATH", $sRoot)

amel27 22-04-2009 08:05 1100650

Pozia, если обеспечите корректность @ProgramFilesDir, то лучше оставить все как есть

Pozia 22-04-2009 17:54 1101178

Цитата:

Цитата amel27
скомпилировать в 32-бит »

это как понять? Нужнр скомпилировать в винде 32 бит или в автоит где то что то включить?

amel27 23-04-2009 02:47 1101631

Pozia, в Aut2Exe чекбокс "x64" не выставлять

Pozia 14-05-2009 21:41 1118672

amel27, тут добавил новую кнопку и она скриптом удаляется хотя не должно. Подправте пожалуйста скрипт. Команда кнопки:

button5=Explorer.exe,6
cmd5=%commander_path%\plugins\Scripts\runfile.exe CMD=%commander_path%\plugins\Scripts\rbc.exe
param5=/c /p
iconic5=0
menu5=Очистить корзину


Время: 23:48.

Время: 23:48.
© OSzone.net 2001-