Войти

Показать полную графическую версию : Определить путь установки приложения в реестре и скопировать файлы


Dr_Arich
28-05-2012, 09:12
Добрый день.

Новичек в написание bat-файлов , однако видной владею не плохо.
И так задача. Необходимо скопировать из одной директорий в определенную директорию.
Однако есть условие. Необходимо определить путь установки приложение через реестр и если путь метода 1 то необходимо произвести следующие действия, однако если это условие не прошло необходимо воспользоваться методам 2.

Написал проверил работает при запуске с командной строки. Однако при запаковки bat-файла в Winrar (SFX) не корректно определяется путь именно DATADIR
Код:
Echo OFF
set f=0
:: Определение папки для скина
Set skin=skinning
::Определение переменной которую необходимо будет добавить в notes.ini
Set mc_skin=EXTMGR_ADDINS=mc_skinning.dll
:: Определяем путь программной директорий Lotus Notes
cd C:\TEMP\

For /f "tokens=2*" %%a In ('C:\Windows\System32\reg.exe query "HKEY_CURRENT_USER\Software\Lotus\Notes\Installer" ^| Find /i "PROGDIR"') Do Set "PROGDIR=%%b"

for /f "tokens=2*" %%a in ('REG query "HKEY_CURRENT_USER\Software\Lotus\Notes\7.0" /v NotesIniPath ^| find "NotesIniPath"') do (Set "NotesPath=%%b" & Set f=1)
if %f%==1 (
echo "metod All Users" > C:\TEMP\log.txt
echo "ini file = %NotesPath%" >> C:\TEMP\log.txt
set j=%NotesPath%
set DATADIR=%j:notes.ini=%
echo Data Directory %DATADIR:~0% >> C:\TEMP\log.txt
echo "Program directory %PROGDIR%" >> C:\TEMP\log.txt

md %DATADIR%%skin%
echo "Sozdanya papki %DATADIR%%skin%" >> C:\TEMP\log.txt
move C:\TEMP\def_background.bmp %DATADIR%%skin%
echo "Copy bmp to %DATADIR%%skin%" >> C:\TEMP\log.txt
:: Поиск и удаление строки EXTMGR_ADDINS= в конфигурационном файле notes.ini
move C:\TEMP\notes.ini "%DATADIR%"
echo %mc_skin% >> %NotesPath%
type %NotesPath% | findstr /i /v "EXTMGR_ADDINS=" > "%DATADIR%temp_notes.ini"
del "%NotesPath%"
rename "%DATADIR%temp_notes.ini" "notes.ini"
:: Добавление переменной EXTMGR_ADDINS=mc_skinning.dll в конфигурационный файл notes.ini
echo %mc_skin% >> "%NotesPath%"
icacls "%NotesPath%" /grant "%USERNAME%:(F)"
) else ( echo "Metod Only Me"
for /f "tokens=2*" %%a in ('REG query "HKEY_CURRENT_USER\Software\Lotus\Notes\installer" /v DATADIR ^| find "DATADIR"') do (Set "DATADIR=%%b" )
md "%DATADIR%%skin%"
move C:\TEMP\def_background.bmp "%DATADIR%%skin%"
:: Поиск и удаление строки EXTMGR_ADDINS= в конфигурационном файле notes.ini
type "%PROGDIR%notes.ini" | findstr /i /v "EXTMGR_ADDINS=" > "%PROGDIR%temp_notes.ini"
del "%PROGDIR%notes.ini"
rename "%PROGDIR%temp_notes.ini" notes.ini
:: Добавление переменной EXTMGR_ADDINS=mc_skinning.dll в конфигурационный файл notes.ini
echo %mc_skin% >> "%PROGDIR%notes.ini"
icacls "%PROGDIR%notes.ini" /grant "%USERNAME%:(F)"
)


echo move dll to %PROGDIR% >> C:\TEMP\log.txt
move C:\TEMP\mc_skinning.dll "%PROGDIR%"




© OSzone.net 2001-2012