Войти

Показать полную графическую версию : [решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте?


Страниц : [1] 2

Pozia
14-03-2009, 02:54
В 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
#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
proxy, спасибо. Скрипт работает почти идеально. Из пожеланий - не нужно чтобы выскакивало окно с просьбой выбрать файл который нужно править. Пусть скрипт работает тихо. Из недостатков - некорректно обрабатывает скрипт те ярлыки, которые заданы относительно по пути - %commander_patch%\. По сути эти ярлыки вообще удалять не нужно. Они у меня в комплекте с самим тотолом ставятся и есть всегда. Можете данные нюансы подправить? Спасибо

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

proxy
14-03-2009, 19:58
так написал же:
осталось только доделать обработку на проверку отнасительных путей и спец. комманд тотола
)))))))))))

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

Pozia
14-03-2009, 22:04
Точно. Чет я затупил ))))) тогда жду. И не забудьте сделать чтобы работал скрипт тихо, не тревожа мой чуткий взор )))

proxy
15-03-2009, 00:20
тестируй, редация: 1.0.3

Pozia
15-03-2009, 00:45
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
аа...забыл значит убрать, расскомментируй строчки:
;~ FileCopy ($sCfgFilePath & '.BAK', $sCfgFilePath, 1)
;~ FileDelete($sCfgFilePath & '.BAK')

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

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

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

proxy
15-03-2009, 02:35
попробуй это (пост выше):
тестируй, редация: 1.0.3
















Вложения
http://forum.oszone.net/images/attach/rar.gifTotalCmd Helper.rar (http://forum.oszone.net/attachment.php?attachmentid=23233&d=1237073666)[/quote]

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

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

Pozia
15-03-2009, 12:31
1. Осталась проблема с
все мои ссылки на серваки домашней сети - cd \\10.16.10.5 »

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

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

amel27
15-03-2009, 16:18
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
amel27, этот скрипт вообще не работает. Или его нужно использовать вписав в предыдущие?

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

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

proxy
15-03-2009, 20:42
З.Ы. Путь установки TC берется из реестра (HKCU\Software\Ghisler\Total Commander\InstallDir) »
к примеру свою сбортку тоотола я уже даааавно не инсталирую, а просто переношу с системы на систему

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

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

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

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

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

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

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

Pozia
15-03-2009, 23:01
amel27, нашел недароботку. Удаляется кнопка 7z

amel27
16-03-2009, 08:34
как в скрипте задать относительный путь »
подправил - путь к Тоталу и имя 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
нашел недароботку. Удаляется кнопка 7z »
странно, у меня вроде нормально - если файл Button.exe есть по указанному пути, то оставляет... кстати, скрипт среди множества встроенных CMD-команд распознает только "CD" - все другие (из длинного списка HELP) будут удалены

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

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

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

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

amel27
22-04-2009, 05:58
как подправить скрипт чтобы он работал с файлом DEFAULT.bar который находится рядом со скриптом »$sFile = @ScriptDir &"\Default.Bar"
подскажите переменную Program Files (x86) чтобы скрипт работал в вистет 64 бит нормально »скомпилировать в 32-бит и @ProgramFilesDir будет возвращать "C:\Program Files (x86)"

Pozia
22-04-2009, 07:45
amel27, а как быть с $sRoot? Ведь она есть здесь: EnvSet("COMMANDER_PATH", $sRoot)




© OSzone.net 2001-2012