Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Зона тестирования » Тест-форум » Тестирование утилиты для подсветки батников

Ответить
Настройки темы
Тестирование утилиты для подсветки батников

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: gora
Дата: 12-11-2014
Описание: Тестирование нового тега CODE
Вложения
Тип файла: 7z Maker_addon_VirtualBox_s2_110513_19-50.7z
(3.7 Kb, 13 просмотров)
Утилита от AZJIO размещена здесь.
Можете потестировать и выложить батники с проблемной подсветкой в этой ветке.
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: =======================================================

:: Файлы можно скачать здесь:

:: http://download.virtualbox.org/virtualbox/vboxdownload.html#windows

:: =======================================================

:: Размер словаря (МБ), измените, если у Вас недостаточно оперативной памяти

:: Set dictUser=32

:: Установить 1 для удаления языков и документации

Set lite=1
:: Установить 1 для принудительной упаковки консольным архиватором (при проблемах с упаковкой)

Set consol=1
:: =======================================================

Title Создание аддона Virtual Box
If "%Time:~0,1%"==" " (Set tt=0%Time:~1,1%-%Time:~3,2%) Else Set tt=%Time:~0,2%-%Time:~3,2%
Echo Запущено %Date% в %tt%
Echo Подготовка ... 
Call :Sec strt1

Call :_DelTemp
Del /Q Virtu*.* 1>Nul 2>&1
MD Temp 1>Nul 2>&1

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
If "%xOS%"=="x86" Set ProgramW6432=%ProgramFiles%& Set ProgramFiles(x86)=%ProgramFiles%
:: =======================================================

:: Путь к установленному архиватору 7-Zip без слеша в конце. Если у Вас путь нестандартный, то впишите АБСОЛЮТНЫЙ путь.

Set path7Zip=%ProgramW6432%\7-Zip
rem Echo %path7Zip%

:: =======================================================

Call :_TestSys

For %%i In ("download\*.exe") Do Set nameExe=%%~nxi
If Not Defined nameExe Call :_Abort "Отсутствует дистрибутив VirtualBox (.exe файл)."
For /F "tokens=2,3 delims=-" %%i In ("%nameExe%") Do (
	Set verexe=%%i
	Set Build=%%j
	Set nVer=%%i-r%%j
)
Set VerC=%verexe:.=,%,0
Copy bin\7zsd_LZMA2.sfx Temp\7zsd_LZMA2.sfx>Nul
For /F "tokens=* delims=" %%i In (bin\ver.rc) Do (
	Set ti=%%i
	Set ti=!ti:02.12.2010=%Date%!
	Set ti=!ti:1,18,6,1444=%VerC%!
	Set ti=!ti:3.2.12=%verexe%!
	Set ti=!ti:68302=%Build%!
	Echo !ti! >>Temp\ver.rc
)
bin\Rc.exe /r /fo Temp\ver.res Temp\ver.rc>Nul
bin\ResHacker.exe -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, Temp\ver.res,,,
bin\ResHacker.exe  -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, bin\101.ico, Icon, 101,
Del bin\ResHacker.ini bin\ResHacker.log >nul

Set FullName=VirtualBox_%verexe%_x86_x64
MD Temp\%FullName%\Files\ForceCopy\SVCPACK 1>Nul 2>&1
Echo Распаковка %nameExe% ...
Set pmsi=%cd%\Temp
PushD Temp
	..\download\%nameExe% -x -s -p "%pmsi%"
	For %%i In (*.msi) Do (
		Set tn=%%~ni
		Set x!tn:~-2!=%%~ni
	)
	Echo Создание админ. точки из %x86% ...
	msiexec /a "%pmsi%\%x86%.msi" /qn TARGETDIR="%pmsi%\%x86%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x86). Повторите."
	Echo Создание админ. точки из %x64% ...
	msiexec /a "%pmsi%\%x64%.msi" /qn TARGETDIR="%pmsi%\%x64%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x64). Повторите."
	If %lite%==1 (
		Echo Удаление мусора из админ. точек ...
		For %%i In ("%x86%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
		For %%i In ("%x64%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
	)
	Call :_sizedir "%x86%"
	Set /A All += dirsize
	Call :_sizedir "%x64%"
	Set /A All += dirsize, AllMB = All/1024/1024
	Echo Дост. словарь	- !AllMB! МБ	(исходя из размера данных !All!)

	Echo Упаковка админ. точек в архив ...
	Call :compr "Упаковка админ. точек в архив" "2in1.7z %x86% %x64%"
	Echo Упаковка архива админ. точек и автономного архиватора в архив ...
	Set tcomline=%comline%
	Set comline=-mx0
	Call :compr "Упаковка архива админ. точек и автономного архиватора" "VirtuBox.7z 2in1.7z ..\bin\7zr.exe ..\bin\PrivateHash.exe"
	Set comline=%tcomline%
	Echo Создание SFX
	Copy ..\bin\VirtualBox_config.txt >Nul
	(Echo SetEnvironment="Vers= v%verexe%"
	Echo SetEnvironment="nVer=%nVer%"
	Echo ;^^!@InstallEnd@^^!)>>VirtualBox_config.txt

	Copy /b ..\Temp\7zsd_LZMA2.sfx + VirtualBox_config.txt + VirtuBox.7z ..\VirtuBox.exe>Nul
	Copy ..\VirtuBox.exe %FullName%\Files\ForceCopy\SVCPACK\ >Nul

	Echo VirtuBox.exe -ai -gm2 -fm0>%FullName%\Run
	
	(Echo └ффюэ VirtualBox v%verexe% [x86/x64]
	Echo.
	Echo ╤юфхЁцшЄ фтх тхЁёшш ^(x86 ш x64^). ╧Ёш єёЄрэютъх ЁрчЁ*фэюёЄ№ ёшёЄхь√ юяЁхфхы*хЄё* 
	Echo ртЄюьрЄшўхёъш ш єёЄрэртыштрхЄё* ёююЄтхЄёЄтє■∙р* тхЁёш* тшЁЄєры№эющ ьр°шэ√.
	Echo.
	Echo VirtualBox - тшЁЄєры№эр* ьр°шэр.
	Echo.
	Echo ╤рщЄ яЁюуЁрьь√: http://www.virtualbox.org/
	Echo ┬хЄър рффюэр: http://forum.oszone.net/post-1436397.html#post1436397
	Echo.
	Echo ╠хёЄю єёЄрэютъш: %%PROGRAMFILES%%\Oracle\VirtualBox\
	Echo ╤яюёюс єёЄрэютъш: SVCPACK, ьюцхЄ шёяюы№чютрЄ№ё* ш фы* єёЄрэютъш эр "цштє■" ёшёЄхьє.
	Echo ▀Ёы√ъш ёючфр■Єё*: т ьхэ■ ╧єёъ-^>╧ЁюуЁрьь√, эр Ёрсюўхь ёЄюых, эр ярэхыш с√ёЄЁюую чряєёър.
	Echo ╧ЁхфєёьюЄЁхэр тючьюцэюёЄ№ єфрыхэш* яЁюуЁрьь√ ўхЁхч ряяыхЄ "╙ёЄрэютър ш єфрыхэшх яЁюуЁрьь".
	Echo.
	Echo └ффюэ яЁхфэрчэрўхэ фы* шёяюы№чютрэш* ё яръхЄюь юсэютыхэшщ UpdatePack-XPSP3-Rus
	Echo.
	Echo ^(c^) gora, %Date%)>%FullName%\addon.nfo

	Echo Упаковка аддона в архив ...
	Call :compr "Упаковка аддона в архив" "..\%FullName%.7z %FullName%"

PopD

Call :_control "%FullName%.7z" "2in1.7z"
Call :Sec strt2
Set /a tmake=strt2-strt1
Echo.
Echo Аддон создан и упакован за %tmake%с ^^!
Echo Размер %size% МБ (со словарем %rdict1% МБ)
Echo.
Echo Для удаления временных файлов и выхода нажмите любую клавишу.
Echo.
Pause >Nul
Call :_DelTemp
Exit

:compr

If "%consol%"=="1"	(
	Start /min /wait "%~1" "%path7Zip%\7z.exe" a -r %~2 %comline%
) Else (
	Start /min /wait "" "%path7Zip%\7zG.exe" a -r %~2 %comline%
)
Set ErL=%ErrorLevel%
If %ErL%==0 GoTo :EOF
If %ErL%==2 Set Err=Фатальная ошибка.
If %ErL%==8 Set Err=Недостаточно памяти для операции.
If %ErL%==255 Set Err=Пользователь остановил процесс.
PopD
Call :_Abort "Ошибка упаковки %ErL%. %Err%"
GoTo :EOF

:_control

Set /A size=%~z1*10/1024*10/1024
Set size=%size:~0,-2%.%size:~-2%

For /F "tokens=1-5 usebackq delims==: " %%i In (`"%path7Zip%\7z.exe" l -slt Temp\%~2`) Do If "%%i"=="Method" If Not "%%l"=="" Set rdict=%%l
If "%rdict:~-1%"=="m" (
	Set rdict1=%rdict:~,-1%
	GoTo :EOF
)
Set /A rdict-=21
Set rdict1=2
For /L %%i In (1,1,%rdict%) Do Set /A rdict1*=2
GoTo :EOF

:_Abort

COLOR 0C
Echo %~1 Создание аддона прервано^^!
Pause >Nul
Call :_DelTemp
Exit

:_TestSys

If Not Exist "%path7Zip%\7zG.exe" Call :_Abort "Неверный путь к архиватору 7-Zip."
For /F "tokens=1-4 usebackq" %%i In (`"%path7Zip%\7z.exe"`) Do (
 	If "%%i"=="7-Zip" (
 		If "%%j"=="[64]" (
			Set arch64=%%j
			Set Ver=%%k
			If "%%l"=="beta" Set Beta=%%l
			If "%%l"=="alpha" Set Beta=%%l
		) Else (
			Set Ver=%%j
			If "%%k"=="beta" Set Beta=%%k
			If "%%k"=="alpha" Set Beta=%%k
		)
	)
)
If %Ver% LSS 9.04 Call :_Abort "Старая версия архиватора 7-Zip. Обновите."
For /F "Tokens=1,2 Skip=1" %%i In ('WMIC OS Get FreePhysicalMemory^, TotalVisibleMemorySize') Do (
	Set /A Fram=%%i/1024, Aram=%%j/1024
	GoTo :_End
)
:_End

Set /a dictM=(%Fram%-4)*10/115
For %%a In (16 24 32 48 64 96 128 192 256 384 512 768 1024) Do If %%a LEQ %dictM% Set dict=%%a
Call :_Limit
Echo.
Echo Разрядность ОС	- %xOS%
Echo Версия 7-Zip	- %Ver% %Beta% %arch64%
Echo RAM всего	- %Aram% МБ
Echo RAM свободно	- %Fram% МБ 	(без учета фрагментации)
Echo Макс. словарь	- %dictM% МБ 	(исходя из свободных %Fram% МБ)
Echo Реком. словарь	- %dict% МБ 	(исходя из макс. словаря %dictM% МБ%limit%)
If Defined dictUser (
	If Defined limit2 (
		Echo Польз. словарь	- %dictUser% МБ	^(будет использован %Sdict% МБ%limit2%^)
	) Else (
		Echo Польз. словарь	- %dictUser% МБ
		Set Sdict=%dictUser%
	)
) Else (
	Echo Польз. словарь	- не задан	^(будет использован рекомендованный %dict% МБ^)
	Set Sdict=%dict%
)
Echo.
Set comline=-mmt2 -m0=BCJ2 -m1=LZMA2:d%Sdict%m:fb273 -m2=LZMA2:d21:fb273 -m3=LZMA2:d21:fb273 -mb0:1 -mb0s1:2 -mb0s2:3
GoTo :EOF

:_Limit

If %xOS%==x64 GoTo :EOF
If %dict% GTR 128 Set limit= [предел x86]& Set dict=128
If Not Defined dictUser GoTo :EOF
If %dictUser% GTR 128 Set limit2= [предел x86]& Set Sdict=128
GoTo :EOF

:_DelTemp

RD /s /q Temp 1>Nul 2>&1
If Not Exist Temp GoTo :EOF
Ping -n 2 localhost>Nul
GoTo :_DelTemp

:Sec

Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF

:_sizedir

For /F "tokens=1-3" %%a In ('Dir %1 /-C /S /A:-D') Do (
	If !flag!==1 Set dirsize=%%c
	If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo :EOF

Отправлено: 16:47, 13-05-2011

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: =======================================================

:: Файлы можно скачать здесь:

:: http://download.virtualbox.org/virtualbox/vboxdownload.html#windows

:: =======================================================

:: Размер словаря (МБ), измените, если у Вас недостаточно оперативной памяти

:: Set dictUser=32

:: Установить 1 для удаления языков и документации

Set lite=1
:: Установить 1 для принудительной упаковки консольным архиватором (при проблемах с упаковкой)

Set consol=1
:: =======================================================

Title Создание аддона Virtual Box
If "%Time:~0,1%"==" " (Set tt=0%Time:~1,1%-%Time:~3,2%) Else Set tt=%Time:~0,2%-%Time:~3,2%
Echo Запущено %Date% в %tt%
Echo Подготовка ... 
Call :Sec strt1

Call :_DelTemp
Del /Q Virtu*.* 1>Nul 2>&1
MD Temp 1>Nul 2>&1

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
If "%xOS%"=="x86" Set ProgramW6432=%ProgramFiles%& Set ProgramFiles(x86)=%ProgramFiles%
:: =======================================================

:: Путь к установленному архиватору 7-Zip без слеша в конце. Если у Вас путь нестандартный, то впишите АБСОЛЮТНЫЙ путь.

Set path7Zip=%ProgramW6432%\7-Zip
rem Echo %path7Zip%

:: =======================================================

Call :_TestSys

For %%i In ("download\*.exe") Do Set nameExe=%%~nxi
If Not Defined nameExe Call :_Abort "Отсутствует дистрибутив VirtualBox (.exe файл)."
For /F "tokens=2,3 delims=-" %%i In ("%nameExe%") Do (
	Set verexe=%%i
	Set Build=%%j
	Set nVer=%%i-r%%j
)
Set VerC=%verexe:.=,%,0
Copy bin\7zsd_LZMA2.sfx Temp\7zsd_LZMA2.sfx>Nul
For /F "tokens=* delims=" %%i In (bin\ver.rc) Do (
	Set ti=%%i
	Set ti=!ti:02.12.2010=%Date%!
	Set ti=!ti:1,18,6,1444=%VerC%!
	Set ti=!ti:3.2.12=%verexe%!
	Set ti=!ti:68302=%Build%!
	Echo !ti! >>Temp\ver.rc
)
bin\Rc.exe /r /fo Temp\ver.res Temp\ver.rc>Nul
bin\ResHacker.exe -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, Temp\ver.res,,,
bin\ResHacker.exe  -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, bin\101.ico, Icon, 101,
Del bin\ResHacker.ini bin\ResHacker.log >nul

Set FullName=VirtualBox_%verexe%_x86_x64
MD Temp\%FullName%\Files\ForceCopy\SVCPACK 1>Nul 2>&1
Echo Распаковка %nameExe% ...
Set pmsi=%cd%\Temp
PushD Temp
	..\download\%nameExe% -x -s -p "%pmsi%"
	For %%i In (*.msi) Do (
		Set tn=%%~ni
		Set x!tn:~-2!=%%~ni
	)
	Echo Создание админ. точки из %x86% ...
	msiexec /a "%pmsi%\%x86%.msi" /qn TARGETDIR="%pmsi%\%x86%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x86). Повторите."
	Echo Создание админ. точки из %x64% ...
	msiexec /a "%pmsi%\%x64%.msi" /qn TARGETDIR="%pmsi%\%x64%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x64). Повторите."
	If %lite%==1 (
		Echo Удаление мусора из админ. точек ...
		For %%i In ("%x86%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
		For %%i In ("%x64%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
	)
	Call :_sizedir "%x86%"
	Set /A All += dirsize
	Call :_sizedir "%x64%"
	Set /A All += dirsize, AllMB = All/1024/1024
	Echo Дост. словарь	- !AllMB! МБ	(исходя из размера данных !All!)

	Echo Упаковка админ. точек в архив ...
	Call :compr "Упаковка админ. точек в архив" "2in1.7z %x86% %x64%"
	Echo Упаковка архива админ. точек и автономного архиватора в архив ...
	Set tcomline=%comline%
	Set comline=-mx0
	Call :compr "Упаковка архива админ. точек и автономного архиватора" "VirtuBox.7z 2in1.7z ..\bin\7zr.exe ..\bin\PrivateHash.exe"
	Set comline=%tcomline%
	Echo Создание SFX
	Copy ..\bin\VirtualBox_config.txt >Nul
	(Echo SetEnvironment="Vers= v%verexe%"
	Echo SetEnvironment="nVer=%nVer%"
	Echo ;^^!@InstallEnd@^^!)>>VirtualBox_config.txt

	Copy /b ..\Temp\7zsd_LZMA2.sfx + VirtualBox_config.txt + VirtuBox.7z ..\VirtuBox.exe>Nul
	Copy ..\VirtuBox.exe %FullName%\Files\ForceCopy\SVCPACK\ >Nul

	Echo VirtuBox.exe -ai -gm2 -fm0>%FullName%\Run
	
	(Echo └ффюэ VirtualBox v%verexe% [x86/x64]
	Echo.
	Echo ╤юфхЁцшЄ фтх тхЁёшш ^(x86 ш x64^). ╧Ёш єёЄрэютъх ЁрчЁ*фэюёЄ№ ёшёЄхь√ юяЁхфхы*хЄё* 
	Echo ртЄюьрЄшўхёъш ш єёЄрэртыштрхЄё* ёююЄтхЄёЄтє■∙р* тхЁёш* тшЁЄєры№эющ ьр°шэ√.
	Echo.
	Echo VirtualBox - тшЁЄєры№эр* ьр°шэр.
	Echo.
	Echo ╤рщЄ яЁюуЁрьь√: http://www.virtualbox.org/
	Echo ┬хЄър рффюэр: http://forum.oszone.net/post-1436397.html#post1436397
	Echo.
	Echo ╠хёЄю єёЄрэютъш: %%PROGRAMFILES%%\Oracle\VirtualBox\
	Echo ╤яюёюс єёЄрэютъш: SVCPACK, ьюцхЄ шёяюы№чютрЄ№ё* ш фы* єёЄрэютъш эр "цштє■" ёшёЄхьє.
	Echo ▀Ёы√ъш ёючфр■Єё*: т ьхэ■ ╧єёъ-^>╧ЁюуЁрьь√, эр Ёрсюўхь ёЄюых, эр ярэхыш с√ёЄЁюую чряєёър.
	Echo ╧ЁхфєёьюЄЁхэр тючьюцэюёЄ№ єфрыхэш* яЁюуЁрьь√ ўхЁхч ряяыхЄ "╙ёЄрэютър ш єфрыхэшх яЁюуЁрьь".
	Echo.
	Echo └ффюэ яЁхфэрчэрўхэ фы* шёяюы№чютрэш* ё яръхЄюь юсэютыхэшщ UpdatePack-XPSP3-Rus
	Echo.
	Echo ^(c^) gora, %Date%)>%FullName%\addon.nfo

	Echo Упаковка аддона в архив ...
	Call :compr "Упаковка аддона в архив" "..\%FullName%.7z %FullName%"

PopD

Call :_control "%FullName%.7z" "2in1.7z"
Call :Sec strt2
Set /a tmake=strt2-strt1
Echo.
Echo Аддон создан и упакован за %tmake%с ^^!
Echo Размер %size% МБ (со словарем %rdict1% МБ)
Echo.
Echo Для удаления временных файлов и выхода нажмите любую клавишу.
Echo.
Pause >Nul
Call :_DelTemp
Exit

:compr

If "%consol%"=="1"	(
	Start /min /wait "%~1" "%path7Zip%\7z.exe" a -r %~2 %comline%
) Else (
	Start /min /wait "" "%path7Zip%\7zG.exe" a -r %~2 %comline%
)
Set ErL=%ErrorLevel%
If %ErL%==0 GoTo :EOF
If %ErL%==2 Set Err=Фатальная ошибка.
If %ErL%==8 Set Err=Недостаточно памяти для операции.
If %ErL%==255 Set Err=Пользователь остановил процесс.
PopD
Call :_Abort "Ошибка упаковки %ErL%. %Err%"
GoTo :EOF

:_control

Set /A size=%~z1*10/1024*10/1024
Set size=%size:~0,-2%.%size:~-2%

For /F "tokens=1-5 usebackq delims==: " %%i In (`"%path7Zip%\7z.exe" l -slt Temp\%~2`) Do If "%%i"=="Method" If Not "%%l"=="" Set rdict=%%l
If "%rdict:~-1%"=="m" (
	Set rdict1=%rdict:~,-1%
	GoTo :EOF
)
Set /A rdict-=21
Set rdict1=2
For /L %%i In (1,1,%rdict%) Do Set /A rdict1*=2
GoTo :EOF

:_Abort

COLOR 0C
Echo %~1 Создание аддона прервано^^!
Pause >Nul
Call :_DelTemp
Exit

:_TestSys

If Not Exist "%path7Zip%\7zG.exe" Call :_Abort "Неверный путь к архиватору 7-Zip."
For /F "tokens=1-4 usebackq" %%i In (`"%path7Zip%\7z.exe"`) Do (
 	If "%%i"=="7-Zip" (
 		If "%%j"=="[64]" (
			Set arch64=%%j
			Set Ver=%%k
			If "%%l"=="beta" Set Beta=%%l
			If "%%l"=="alpha" Set Beta=%%l
		) Else (
			Set Ver=%%j
			If "%%k"=="beta" Set Beta=%%k
			If "%%k"=="alpha" Set Beta=%%k
		)
	)
)
If %Ver% LSS 9.04 Call :_Abort "Старая версия архиватора 7-Zip. Обновите."
For /F "Tokens=1,2 Skip=1" %%i In ('WMIC OS Get FreePhysicalMemory^, TotalVisibleMemorySize') Do (
	Set /A Fram=%%i/1024, Aram=%%j/1024
	GoTo :_End
)
:_End

Set /a dictM=(%Fram%-4)*10/115
For %%a In (16 24 32 48 64 96 128 192 256 384 512 768 1024) Do If %%a LEQ %dictM% Set dict=%%a
Call :_Limit
Echo.
Echo Разрядность ОС	- %xOS%
Echo Версия 7-Zip	- %Ver% %Beta% %arch64%
Echo RAM всего	- %Aram% МБ
Echo RAM свободно	- %Fram% МБ 	(без учета фрагментации)
Echo Макс. словарь	- %dictM% МБ 	(исходя из свободных %Fram% МБ)
Echo Реком. словарь	- %dict% МБ 	(исходя из макс. словаря %dictM% МБ%limit%)
If Defined dictUser (
	If Defined limit2 (
		Echo Польз. словарь	- %dictUser% МБ	^(будет использован %Sdict% МБ%limit2%^)
	) Else (
		Echo Польз. словарь	- %dictUser% МБ
		Set Sdict=%dictUser%
	)
) Else (
	Echo Польз. словарь	- не задан	^(будет использован рекомендованный %dict% МБ^)
	Set Sdict=%dict%
)
Echo.
Set comline=-mmt2 -m0=BCJ2 -m1=LZMA2:d%Sdict%m:fb273 -m2=LZMA2:d21:fb273 -m3=LZMA2:d21:fb273 -mb0:1 -mb0s1:2 -mb0s2:3
GoTo :EOF

:_Limit

If %xOS%==x64 GoTo :EOF
If %dict% GTR 128 Set limit= [предел x86]& Set dict=128
If Not Defined dictUser GoTo :EOF
If %dictUser% GTR 128 Set limit2= [предел x86]& Set Sdict=128
GoTo :EOF

:_DelTemp

RD /s /q Temp 1>Nul 2>&1
If Not Exist Temp GoTo :EOF
Ping -n 2 localhost>Nul
GoTo :_DelTemp

:Sec

Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF

:_sizedir

For /F "tokens=1-3" %%a In ('Dir %1 /-C /S /A:-D') Do (
	If !flag!==1 Set dirsize=%%c
	If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo :EOF

Последний раз редактировалось gora, 14-05-2011 в 14:11.


Отправлено: 19:48, 13-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: =======================================================
:: Файлы можно скачать здесь:
:: http://download.virtualbox.org/virtualbox/vboxdownload.html#windows
:: =======================================================
:: Размер словаря (МБ), измените, если у Вас недостаточно оперативной памяти
:: Set dictUser=32
:: Установить 1 для удаления языков и документации
Set lite=1
:: Установить 1 для принудительной упаковки консольным архиватором (при проблемах с упаковкой)
Set consol=1
:: =======================================================
Title Создание аддона Virtual Box
If "%Time:~0,1%"==" " (Set tt=0%Time:~1,1%-%Time:~3,2%) Else Set tt=%Time:~0,2%-%Time:~3,2%
Echo Запущено %Date% в %tt%
Echo Подготовка ... 
Call :Sec strt1

Call :_DelTemp
Del /Q Virtu*.* 1>Nul 2>&1
MD Temp 1>Nul 2>&1

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
If "%xOS%"=="x86" Set ProgramW6432=%ProgramFiles%& Set ProgramFiles(x86)=%ProgramFiles%
:: =======================================================
:: Путь к установленному архиватору 7-Zip без слеша в конце. Если у Вас путь нестандартный, то впишите АБСОЛЮТНЫЙ путь.
Set path7Zip=%ProgramW6432%\7-Zip
rem Echo %path7Zip%
:: =======================================================
Call :_TestSys

For %%i In ("download\*.exe") Do Set nameExe=%%~nxi
If Not Defined nameExe Call :_Abort "Отсутствует дистрибутив VirtualBox (.exe файл)."
For /F "tokens=2,3 delims=-" %%i In ("%nameExe%") Do (
	Set verexe=%%i
	Set Build=%%j
	Set nVer=%%i-r%%j
)
Set VerC=%verexe:.=,%,0
Copy bin\7zsd_LZMA2.sfx Temp\7zsd_LZMA2.sfx>Nul
For /F "tokens=* delims=" %%i In (bin\ver.rc) Do (
	Set ti=%%i
	Set ti=!ti:02.12.2010=%Date%!
	Set ti=!ti:1,18,6,1444=%VerC%!
	Set ti=!ti:3.2.12=%verexe%!
	Set ti=!ti:68302=%Build%!
	Echo !ti! >>Temp\ver.rc
)
bin\Rc.exe /r /fo Temp\ver.res Temp\ver.rc>Nul
bin\ResHacker.exe -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, Temp\ver.res,,,
bin\ResHacker.exe  -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, bin\101.ico, Icon, 101,
Del bin\ResHacker.ini bin\ResHacker.log >nul

Set FullName=VirtualBox_%verexe%_x86_x64
MD Temp\%FullName%\Files\ForceCopy\SVCPACK 1>Nul 2>&1
Echo Распаковка %nameExe% ...
Set pmsi=%cd%\Temp
PushD Temp
	..\download\%nameExe% -x -s -p "%pmsi%"
	For %%i In (*.msi) Do (
		Set tn=%%~ni
		Set x!tn:~-2!=%%~ni
	)
	Echo Создание админ. точки из %x86% ...
	msiexec /a "%pmsi%\%x86%.msi" /qn TARGETDIR="%pmsi%\%x86%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x86). Повторите."
	Echo Создание админ. точки из %x64% ...
	msiexec /a "%pmsi%\%x64%.msi" /qn TARGETDIR="%pmsi%\%x64%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x64). Повторите."
	If %lite%==1 (
		Echo Удаление мусора из админ. точек ...
		For %%i In ("%x86%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
		For %%i In ("%x64%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
	)
	Call :_sizedir "%x86%"
	Set /A All += dirsize
	Call :_sizedir "%x64%"
	Set /A All += dirsize, AllMB = All/1024/1024
	Echo Дост. словарь	- !AllMB! МБ	(исходя из размера данных !All!)

	Echo Упаковка админ. точек в архив ...
	Call :compr "Упаковка админ. точек в архив" "2in1.7z %x86% %x64%"
	Echo Упаковка архива админ. точек и автономного архиватора в архив ...
	Set tcomline=%comline%
	Set comline=-mx0
	Call :compr "Упаковка архива админ. точек и автономного архиватора" "VirtuBox.7z 2in1.7z ..\bin\7zr.exe ..\bin\PrivateHash.exe"
	Set comline=%tcomline%
	Echo Создание SFX
	Copy ..\bin\VirtualBox_config.txt >Nul
	(Echo SetEnvironment="Vers= v%verexe%"
	Echo SetEnvironment="nVer=%nVer%"
	Echo ;^^!@InstallEnd@^^!)>>VirtualBox_config.txt

	Copy /b ..\Temp\7zsd_LZMA2.sfx + VirtualBox_config.txt + VirtuBox.7z ..\VirtuBox.exe>Nul
	Copy ..\VirtuBox.exe %FullName%\Files\ForceCopy\SVCPACK\ >Nul

	Echo VirtuBox.exe -ai -gm2 -fm0>%FullName%\Run
	
	(Echo └ффюэ VirtualBox v%verexe% [x86/x64]
	Echo.
	Echo ╤юфхЁцшЄ фтх тхЁёшш ^(x86 ш x64^). ╧Ёш єёЄрэютъх ЁрчЁ*фэюёЄ№ ёшёЄхь√ юяЁхфхы*хЄё* 
	Echo ртЄюьрЄшўхёъш ш єёЄрэртыштрхЄё* ёююЄтхЄёЄтє■∙р* тхЁёш* тшЁЄєры№эющ ьр°шэ√.
	Echo.
	Echo VirtualBox - тшЁЄєры№эр* ьр°шэр.
	Echo.
	Echo ╤рщЄ яЁюуЁрьь√: http://www.virtualbox.org/
	Echo ┬хЄър рффюэр: http://forum.oszone.net/post-1436397.html#post1436397
	Echo.
	Echo ╠хёЄю єёЄрэютъш: %%PROGRAMFILES%%\Oracle\VirtualBox\
	Echo ╤яюёюс єёЄрэютъш: SVCPACK, ьюцхЄ шёяюы№чютрЄ№ё* ш фы* єёЄрэютъш эр "цштє■" ёшёЄхьє.
	Echo ▀Ёы√ъш ёючфр■Єё*: т ьхэ■ ╧єёъ-^>╧ЁюуЁрьь√, эр Ёрсюўхь ёЄюых, эр ярэхыш с√ёЄЁюую чряєёър.
	Echo ╧ЁхфєёьюЄЁхэр тючьюцэюёЄ№ єфрыхэш* яЁюуЁрьь√ ўхЁхч ряяыхЄ "╙ёЄрэютър ш єфрыхэшх яЁюуЁрьь".
	Echo.
	Echo └ффюэ яЁхфэрчэрўхэ фы* шёяюы№чютрэш* ё яръхЄюь юсэютыхэшщ UpdatePack-XPSP3-Rus
	Echo.
	Echo ^(c^) gora, %Date%)>%FullName%\addon.nfo

	Echo Упаковка аддона в архив ...
	Call :compr "Упаковка аддона в архив" "..\%FullName%.7z %FullName%"

PopD

Call :_control "%FullName%.7z" "2in1.7z"
Call :Sec strt2
Set /a tmake=strt2-strt1
Echo.
Echo Аддон создан и упакован за %tmake%с ^^!
Echo Размер %size% МБ (со словарем %rdict1% МБ)
Echo.
Echo Для удаления временных файлов и выхода нажмите любую клавишу.
Echo.
Pause >Nul
Call :_DelTemp
Exit

:compr

If "%consol%"=="1"	(
	Start /min /wait "%~1" "%path7Zip%\7z.exe" a -r %~2 %comline%
) Else (
	Start /min /wait "" "%path7Zip%\7zG.exe" a -r %~2 %comline%
)
Set ErL=%ErrorLevel%
If %ErL%==0 GoTo :EOF
If %ErL%==2 Set Err=Фатальная ошибка.
If %ErL%==8 Set Err=Недостаточно памяти для операции.
If %ErL%==255 Set Err=Пользователь остановил процесс.
PopD
Call :_Abort "Ошибка упаковки %ErL%. %Err%"
GoTo :EOF

:_control

Set /A size=%~z1*10/1024*10/1024
Set size=%size:~0,-2%.%size:~-2%

For /F "tokens=1-5 usebackq delims==: " %%i In (`"%path7Zip%\7z.exe" l -slt Temp\%~2`) Do If "%%i"=="Method" If Not "%%l"=="" Set rdict=%%l
If "%rdict:~-1%"=="m" (
	Set rdict1=%rdict:~,-1%
	GoTo :EOF
)
Set /A rdict-=21
Set rdict1=2
For /L %%i In (1,1,%rdict%) Do Set /A rdict1*=2
GoTo :EOF

:_Abort

COLOR 0C
Echo %~1 Создание аддона прервано^^!
Pause >Nul
Call :_DelTemp
Exit

:_TestSys

If Not Exist "%path7Zip%\7zG.exe" Call :_Abort "Неверный путь к архиватору 7-Zip."
For /F "tokens=1-4 usebackq" %%i In (`"%path7Zip%\7z.exe"`) Do (
 	If "%%i"=="7-Zip" (
 		If "%%j"=="[64]" (
			Set arch64=%%j
			Set Ver=%%k
			If "%%l"=="beta" Set Beta=%%l
			If "%%l"=="alpha" Set Beta=%%l
		) Else (
			Set Ver=%%j
			If "%%k"=="beta" Set Beta=%%k
			If "%%k"=="alpha" Set Beta=%%k
		)
	)
)
If %Ver% LSS 9.04 Call :_Abort "Старая версия архиватора 7-Zip. Обновите."
For /F "Tokens=1,2 Skip=1" %%i In ('WMIC OS Get FreePhysicalMemory^, TotalVisibleMemorySize') Do (
	Set /A Fram=%%i/1024, Aram=%%j/1024
	GoTo :_End
)
:_End

Set /a dictM=(%Fram%-4)*10/115
For %%a In (16 24 32 48 64 96 128 192 256 384 512 768 1024) Do If %%a LEQ %dictM% Set dict=%%a
Call :_Limit
Echo.
Echo Разрядность ОС	- %xOS%
Echo Версия 7-Zip	- %Ver% %Beta% %arch64%
Echo RAM всего	- %Aram% МБ
Echo RAM свободно	- %Fram% МБ 	(без учета фрагментации)
Echo Макс. словарь	- %dictM% МБ 	(исходя из свободных %Fram% МБ)
Echo Реком. словарь	- %dict% МБ 	(исходя из макс. словаря %dictM% МБ%limit%)
If Defined dictUser (
	If Defined limit2 (
		Echo Польз. словарь	- %dictUser% МБ	^(будет использован %Sdict% МБ%limit2%^)
	) Else (
		Echo Польз. словарь	- %dictUser% МБ
		Set Sdict=%dictUser%
	)
) Else (
	Echo Польз. словарь	- не задан	^(будет использован рекомендованный %dict% МБ^)
	Set Sdict=%dict%
)
Echo.
Set comline=-mmt2 -m0=BCJ2 -m1=LZMA2:d%Sdict%m:fb273 -m2=LZMA2:d21:fb273 -m3=LZMA2:d21:fb273 -mb0:1 -mb0s1:2 -mb0s2:3
GoTo :EOF

:_Limit

If %xOS%==x64 GoTo :EOF
If %dict% GTR 128 Set limit= [предел x86]& Set dict=128
If Not Defined dictUser GoTo :EOF
If %dictUser% GTR 128 Set limit2= [предел x86]& Set Sdict=128
GoTo :EOF

:_DelTemp

RD /s /q Temp 1>Nul 2>&1
If Not Exist Temp GoTo :EOF
Ping -n 2 localhost>Nul
GoTo :_DelTemp

:Sec

Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF

:_sizedir

For /F "tokens=1-3" %%a In ('Dir %1 /-C /S /A:-D') Do (
	If !flag!==1 Set dirsize=%%c
	If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo :EOF

Отправлено: 07:44, 14-05-2011 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: =======================================================
:: Файлы можно скачать здесь:
:: http://download.virtualbox.org/virtualbox/vboxdownload.html#windows
:: =======================================================
:: Размер словаря (МБ), измените, если у Вас недостаточно оперативной памяти
:: Set dictUser=32
:: Установить 1 для удаления языков и документации
Set lite=1
:: Установить 1 для принудительной упаковки консольным архиватором (при проблемах с упаковкой)
Set consol=1
:: =======================================================
Title Создание аддона Virtual Box
If "%Time:~0,1%"==" " (Set tt=0%Time:~1,1%-%Time:~3,2%) Else Set tt=%Time:~0,2%-%Time:~3,2%
Echo Запущено %Date% в %tt%
Echo Подготовка ... 
Call :Sec strt1

Call :_DelTemp
Del /Q Virtu*.* 1>Nul 2>&1
MD Temp 1>Nul 2>&1

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
If "%xOS%"=="x86" Set ProgramW6432=%ProgramFiles%& Set ProgramFiles(x86)=%ProgramFiles%
:: =======================================================
:: Путь к установленному архиватору 7-Zip без слеша в конце. Если у Вас путь нестандартный, то впишите АБСОЛЮТНЫЙ путь.
Set path7Zip=%ProgramW6432%\7-Zip
rem [color=#0000FF]Echo[/color] %path7Zip%
:: =======================================================
Call :_TestSys

For %%i In ("download\*.exe") Do Set nameExe=%%~nxi
If Not Defined nameExe Call :_Abort "Отсутствует дистрибутив VirtualBox (.exe файл)."
For /F "tokens=2,3 delims=-" %%i In ("%nameExe%") Do (
	Set verexe=%%i
	Set Build=%%j
	Set nVer=%%i-r%%j
)
Set VerC=%verexe:.=,%,0
Copy bin\7zsd_LZMA2.sfx Temp\7zsd_LZMA2.sfx>Nul
For /F "tokens=* delims=" %%i In (bin\ver.rc) Do (
	Set ti=%%i
	Set ti=!ti:02.12.2010=%Date%!
	Set ti=!ti:1,18,6,1444=%VerC%!
	Set ti=!ti:3.2.12=%verexe%!
	Set ti=!ti:68302=%Build%!
	Echo !ti! >>Temp\ver.rc
)
bin\Rc.exe /r /fo Temp\ver.res Temp\ver.rc>Nul
bin\ResHacker.exe -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, Temp\ver.res,,,
bin\ResHacker.exe  -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, bin\101.ico, Icon, 101,
Del bin\ResHacker.ini bin\ResHacker.log >nul

Set FullName=VirtualBox_%verexe%_x86_x64
MD Temp\%FullName%\Files\ForceCopy\SVCPACK 1>Nul 2>&1
Echo Распаковка %nameExe% ...
Set pmsi=%cd%\Temp
PushD Temp
	..\download\%nameExe% -x -s -p "%pmsi%"
	For %%i In (*.msi) Do (
		Set tn=%%~ni
		Set x!tn:~-2!=%%~ni
	)
	Echo Создание админ. точки из %x86% ...
	msiexec /a "%pmsi%\%x86%.msi" /qn TARGETDIR="%pmsi%\%x86%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x86). Повторите."
	Echo Создание админ. точки из %x64% ...
	msiexec /a "%pmsi%\%x64%.msi" /qn TARGETDIR="%pmsi%\%x64%"
	If Not %ErrorLevel%==0 PopD & Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x64). Повторите."
	If %lite%==1 (
		Echo Удаление мусора из админ. точек ...
		For %%i In ("%x86%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
		For %%i In ("%x64%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
	)
	Call :_sizedir "%x86%"
	Set /A All += dirsize
	Call :_sizedir "%x64%"
	Set /A All += dirsize, AllMB = All/1024/1024
	Echo Дост. словарь	- !AllMB! МБ	(исходя из размера данных !All!)

	Echo Упаковка админ. точек в архив ...
	Call :compr "Упаковка админ. точек в архив" "2in1.7z %x86% %x64%"
	Echo Упаковка архива админ. точек и автономного архиватора в архив ...
	Set tcomline=%comline%
	Set comline=-mx0
	Call :compr "Упаковка архива админ. точек и автономного архиватора" "VirtuBox.7z 2in1.7z ..\bin\7zr.exe ..\bin\PrivateHash.exe"
	Set comline=%tcomline%
	Echo Создание SFX
	Copy ..\bin\VirtualBox_config.txt >Nul
	(Echo SetEnvironment="Vers= v%verexe%"
	Echo SetEnvironment="nVer=%nVer%"
	Echo ;^^!@InstallEnd@^^!)>>VirtualBox_config.txt

	Copy /b ..\Temp\7zsd_LZMA2.sfx + VirtualBox_config.txt + VirtuBox.7z ..\VirtuBox.exe>Nul
	Copy ..\VirtuBox.exe %FullName%\Files\ForceCopy\SVCPACK\ >Nul

	Echo VirtuBox.exe -ai -gm2 -fm0>%FullName%\Run
	
	(Echo Аффюэ VirtualBox v%verexe% [x86/x64]
	Echo.
	Echo СюфхЁцшт фтх тхЁёшш ^(x86 ш x64^). ПЁш уётрэютъх ЁрчЁяфэюёт№ ёшётхьы юяЁхфхыяхтёя 
	Echo рттюьртшчхёъш ш уётрэртыштрхтёя ёююттхтёттующря тхЁёшя тшЁтуры№эющ ьршшэы.
	Echo.
	Echo VirtualBox - тшЁтуры№эря ьршшэр.
	Echo.
	Echo Срщт яЁюуЁрььы: http://www.virtualbox.org/
	Echo Вхтър рффюэр: http://forum.oszone.net/post-1436397.html#post1436397
	Echo.
	Echo Мхётю уётрэютъш: %%PROGRAMFILES%%\Oracle\VirtualBox\
	Echo Сяюёюс уётрэютъш: SVCPACK, ьюцхт шёяюы№чютрт№ёя ш фыя уётрэютъш эр "цштую" ёшётхьу.
	Echo ЯЁыыъш ёючфрютёя: т ьхэю Пуёъ-^>ПЁюуЁрььы, эр Ёрсючхь ётюых, эр ярэхыш сыётЁюую чряуёър.
	Echo ПЁхфуёьютЁхэр тючьюцэюёт№ уфрыхэшя яЁюуЁрььы чхЁхч ряяыхт "Уётрэютър ш уфрыхэшх яЁюуЁрьь".
	Echo.
	Echo Аффюэ яЁхфэрчэрчхэ фыя шёяюы№чютрэшя ё яръхтюь юсэютыхэшщ UpdatePack-XPSP3-Rus
	Echo.
	Echo ^(c^) gora, %Date%)>%FullName%\addon.nfo

	Echo Упаковка аддона в архив ...
	Call :compr "Упаковка аддона в архив" "..\%FullName%.7z %FullName%"

PopD

Call :_control "%FullName%.7z" "2in1.7z"
Call :Sec strt2
Set /a tmake=strt2-strt1
Echo.
Echo Аддон создан и упакован за %tmake%с ^^!
Echo Размер %size% МБ (со словарем %rdict1% МБ)
Echo.
Echo Для удаления временных файлов и выхода нажмите любую клавишу.
Echo.
Pause >Nul
Call :_DelTemp
Exit

:compr
If "%consol%"=="1"	(
	Start /min /wait "%~1" "%path7Zip%\7z.exe" a -r %~2 %comline%
) Else (
	Start /min /wait "" "%path7Zip%\7zG.exe" a -r %~2 %comline%
)
Set ErL=%ErrorLevel%
If %ErL%==0 GoTo :EOF
If %ErL%==2 Set Err=Фатальная ошибка.
If %ErL%==8 Set Err=Недостаточно памяти для операции.
If %ErL%==255 Set Err=Пользователь остановил процесс.
PopD
Call :_Abort "Ошибка упаковки %ErL%. %Err%"
GoTo :EOF

:_control
Set /A size=%~z1*10/1024*10/1024
Set size=%size:~0,-2%.%size:~-2%

For /F "tokens=1-5 usebackq delims==: " %%i In (`"%path7Zip%\7z.exe" l -slt Temp\%~2`) Do If "%%i"=="Method" If Not "%%l"=="" Set rdict=%%l
If "%rdict:~-1%"=="m" (
	Set rdict1=%rdict:~,-1%
	GoTo :EOF
)
Set /A rdict-=21
Set rdict1=2
For /L %%i In (1,1,%rdict%) Do Set /A rdict1*=2
GoTo :EOF

:_Abort
COLOR 0C
Echo %~1 Создание аддона прервано^^!
Pause >Nul
Call :_DelTemp
Exit

:_TestSys
If Not Exist "%path7Zip%\7zG.exe" Call :_Abort "Неверный путь к архиватору 7-Zip."
For /F "tokens=1-4 usebackq" %%i In (`"%path7Zip%\7z.exe"`) Do (
 	If "%%i"=="7-Zip" (
 		If "%%j"=="[64]" (
			Set arch64=%%j
			Set Ver=%%k
			If "%%l"=="beta" Set Beta=%%l
			If "%%l"=="alpha" Set Beta=%%l
		) Else (
			Set Ver=%%j
			If "%%k"=="beta" Set Beta=%%k
			If "%%k"=="alpha" Set Beta=%%k
		)
	)
)
If %Ver% LSS 9.04 Call :_Abort "Старая версия архиватора 7-Zip. Обновите."
For /F "Tokens=1,2 Skip=1" %%i In ('WMIC OS Get FreePhysicalMemory^, TotalVisibleMemorySize') Do (
	Set /A Fram=%%i/1024, Aram=%%j/1024
	GoTo :_End
)
:_End
Set /a dictM=(%Fram%-4)*10/115
For %%a In (16 24 32 48 64 96 128 192 256 384 512 768 1024) Do If %%a LEQ %dictM% Set dict=%%a
Call :_Limit
Echo.
Echo Разрядность ОС	- %xOS%
Echo Версия 7-Zip	- %Ver% %Beta% %arch64%
Echo RAM всего	- %Aram% МБ
Echo RAM свободно	- %Fram% МБ 	(без учета фрагментации)
Echo Макс. словарь	- %dictM% МБ 	(исходя из свободных %Fram% МБ)
Echo Реком. словарь	- %dict% МБ 	(исходя из макс. словаря %dictM% МБ%limit%)
If Defined dictUser (
	If Defined limit2 (
		Echo Польз. словарь	- %dictUser% МБ	^(будет использован %Sdict% МБ%limit2%^)
	) Else (
		Echo Польз. словарь	- %dictUser% МБ
		Set Sdict=%dictUser%
	)
) Else (
	Echo Польз. словарь	- не задан	^(будет использован рекомендованный %dict% МБ^)
	Set Sdict=%dict%
)
Echo.
Set comline=-mmt2 -m0=BCJ2 -m1=LZMA2:d%Sdict%m:fb273 -m2=LZMA2:d21:fb273 -m3=LZMA2:d21:fb273 -mb0:1 -mb0s1:2 -mb0s2:3
GoTo :EOF

:_Limit
If %xOS%==x64 GoTo :EOF
If %dict% GTR 128 Set limit= [предел x86]& Set dict=128
If Not Defined dictUser GoTo :EOF
If %dictUser% GTR 128 Set limit2= [предел x86]& Set Sdict=128
GoTo :EOF

:_DelTemp
RD /s /q Temp 1>Nul 2>&1
If Not Exist Temp GoTo :EOF
Ping -n 2 localhost>Nul
GoTo :_DelTemp

:Sec
Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF

:_sizedir
For /F "tokens=1-3" %%a In ('Dir %1 /-C /S /A:-D') Do (
	If !flag!==1 Set dirsize=%%c
	If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo :EOF

Последний раз редактировалось gora, 15-05-2011 в 08:04.


Отправлено: 07:16, 15-05-2011 | #4


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: =======================================================
:: Файлы можно скачать здесь:
:: http://download.virtualbox.org/virtualbox/vboxdownload.html#windows
:: =======================================================
:: Размер словаря (МБ), измените, если у Вас недостаточно оперативной памяти
:: Set dictUser=32
:: Установить 1 для удаления языков и документации
Set lite=1
:: Установить 1 для принудительной упаковки консольным архиватором (при проблемах с упаковкой)
:: Set consol=1
:: =======================================================
Title Создание аддона Virtual Box
If "%Time:~0,1%"==" " (Set tt=0%Time:~1,1%-%Time:~3,2%) Else Set tt=%Time:~0,2%-%Time:~3,2%
Echo Запущено %Date% в %tt%
:: Echo Подготовка ... 
Call :Sec strt1

Call :_DelTemp
Del /Q Virtu*.* 1>Nul 2>&1
MD Temp 1>Nul 2>&1

Set xOS=x86& If Defined PROCESSOR_ARCHITEW6432 (Set xOS=x64) Else If "%PROCESSOR_ARCHITECTURE%"=="AMD64" Set xOS=x64
If "%xOS%"=="x86" Set ProgramW6432=%ProgramFiles%& Set ProgramFiles(x86)=%ProgramFiles%
:: =======================================================
:: Путь к установленному архиватору 7-Zip без слеша в конце. Если у Вас путь нестандартный, то впишите АБСОЛЮТНЫЙ путь.
Set path7Zip=%ProgramW6432%\7-Zip
rem Echo %path7Zip%
:: =======================================================
Call :_TestSys

For %%i In ("download\*.exe") Do Set nameExe=%%~nxi
If Not Defined nameExe Call :_Abort "Отсутствует дистрибутив VirtualBox (.exe файл)."
For /F "tokens=2,3 delims=-" %%i In ("%nameExe%") Do (
	Set verexe=%%i
	Set Build=%%j
	Set nVer=%%i-r%%j
)
Set VerC=%verexe:.=,%,0
Copy bin\7zsd_LZMA2.sfx Temp\7zsd_LZMA2.sfx>Nul
For /F "tokens=* delims=" %%i In (bin\ver.rc) Do (
	Set ti=%%i
	Set ti=!ti:02.12.2010=%Date%!
	Set ti=!ti:1,18,6,1444=%VerC%!
	Set ti=!ti:3.2.12=%verexe%!
	Set ti=!ti:68302=%Build%!
	Echo !ti! >>Temp\ver.rc
)
bin\Rc.exe /r /fo Temp\ver.res Temp\ver.rc>Nul
bin\ResHacker.exe -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, Temp\ver.res,,,
bin\ResHacker.exe  -addoverwrite Temp\7zsd_LZMA2.sfx, Temp\7zsd_LZMA2.sfx, bin\101.ico, Icon, 101,
Del bin\ResHacker.ini bin\ResHacker.log >nul

Set FullName=VirtualBox_%verexe%_x86_x64
MD Temp\%FullName%\Files\ForceCopy\SVCPACK 1>Nul 2>&1
Echo Распаковка %nameExe% ...
Set pmsi=%cd%\Temp
download\%nameExe% -x -s -p "%pmsi%"
For %%i In (Temp\*.msi) Do (
	Set tn=%%~ni
	Set x!tn:~-2!=%%~ni
)
Echo Создание админ. точки из %x86% ...
msiexec /a "%pmsi%\%x86%.msi" /qn TARGETDIR="%pmsi%\%x86%"
If Not %ErrorLevel%==0 Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x86). Повторите."
Echo Создание админ. точки из %x64% ...
msiexec /a "%pmsi%\%x64%.msi" /qn TARGETDIR="%pmsi%\%x64%"
If Not %ErrorLevel%==0 Call :_Abort "Ошибка %ErrorLevel% создания админ. точки (x64). Повторите."
PushD Temp
	If %lite%==1 (
		Echo Удаление мусора из админ. точек ...
		For %%i In ("%x86%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x86%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
		For %%i In ("%x64%\PFiles\Oracle VM VirtualBox\nls\*.qm") Do (
			Set ti=%%~ni
			If /I Not !ti:~-2!==ru If /I Not !ti:~-2!==en CD. >%%i
		)
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\doc\UserManual.pdf"
		CD. >"%x64%\PFiles\Oracle VM VirtualBox\VirtualBox.chm"
	)
	Call :_sizedir "%x86%"
	Set /A All += dirsize
	Call :_sizedir "%x64%"
	Set /A All += dirsize, AllMB = All/1024/1024
	Echo !AllMB! !All! >..\suff_size.txt 

	Echo Упаковка админ. точек в архив ...
	Call :compr "Упаковка админ. точек в архив" "2in1.7z %x86% %x64%"
	Echo Упаковка архива админ. точек и автономного архиватора в архив ...
	Set tcomline=%comline%
	Set comline=-mx0
	Call :compr "Упаковка архива админ. точек и автономного архиватора" "VirtuBox.7z 2in1.7z ..\bin\7zr.exe ..\bin\PrivateHash.exe"
	Set comline=%tcomline%
	Echo Создание SFX
	Copy ..\bin\VirtualBox_config.txt >Nul
	(Echo SetEnvironment="Vers= v%verexe%"
	Echo SetEnvironment="nVer=%nVer%"
	Echo ;^^!@InstallEnd@^^!)>>VirtualBox_config.txt

	Copy /b ..\Temp\7zsd_LZMA2.sfx + VirtualBox_config.txt + VirtuBox.7z ..\VirtuBox.exe>Nul
	Copy ..\VirtuBox.exe %FullName%\Files\ForceCopy\SVCPACK\ >Nul

	Echo VirtuBox.exe -ai -gm2 -fm0>%FullName%\Run
	
	(Echo Аффюэ VirtualBox v%verexe% [x86/x64]
	Echo.
	Echo СюфхЁцшт фтх тхЁёшш ^(x86 ш x64^). ПЁш уётрэютъх ЁрчЁяфэюёт№ ёшётхьы юяЁхфхыяхтёя 
	Echo рттюьртшчхёъш ш уётрэртыштрхтёя ёююттхтёттующря тхЁёшя тшЁтуры№эющ ьршшэы.
	Echo.
	Echo VirtualBox - тшЁтуры№эря ьршшэр.
	Echo.
	Echo Срщт яЁюуЁрььы: http://www.virtualbox.org/
	Echo Вхтър рффюэр: http://forum.oszone.net/post-1436397.html#post1436397
	Echo.
	Echo Мхётю уётрэютъш: %%PROGRAMFILES%%\Oracle\VirtualBox\
	Echo Сяюёюс уётрэютъш: SVCPACK, ьюцхт шёяюы№чютрт№ёя ш фыя уётрэютъш эр "цштую" ёшётхьу.
	Echo ЯЁыыъш ёючфрютёя: т ьхэю Пуёъ-^>ПЁюуЁрььы, эр Ёрсючхь ётюых, эр ярэхыш сыётЁюую чряуёър.
	Echo ПЁхфуёьютЁхэр тючьюцэюёт№ уфрыхэшя яЁюуЁрььы чхЁхч ряяыхт "Уётрэютър ш уфрыхэшх яЁюуЁрьь".
	Echo.
	Echo Аффюэ яЁхфэрчэрчхэ фыя шёяюы№чютрэшя ё яръхтюь юсэютыхэшщ UpdatePack-XPSP3-Rus
	Echo.
	Echo ^(c^) gora, %Date%)>%FullName%\addon.nfo

	Echo Упаковка аддона в архив ...
	Call :compr "Упаковка аддона в архив" "..\%FullName%.7z %FullName%"

PopD

Call :_control "%FullName%.7z" "2in1.7z"
Call :Sec strt2
Set /a tmake=strt2-strt1
Echo.
Echo Аддон создан и упакован за %tmake%с. Размер %size% МБ (со словарем %rdict1% МБ)
Echo.
Echo Для удаления временных файлов и выхода нажмите любую клавишу.
Echo.
Pause >Nul
Call :_DelTemp
Exit

:compr
If "%consol%"=="1"	(
	Start /min /wait "%~1" "%path7Zip%\7z.exe" a -r %~2 %comline%
) Else (
	Start /min /wait "" "%path7Zip%\7zG.exe" a -r %~2 %comline%
)
Set ErL=%ErrorLevel%
If %ErL%==0 GoTo :EOF
If %ErL%==2 Set Err=Фатальная ошибка.
If %ErL%==8 Set Err=Недостаточно памяти для операции.
If %ErL%==255 Set Err=Пользователь остановил процесс.
PopD
Call :_Abort "Ошибка упаковки %ErL%. %Err%"
GoTo :EOF

:_control
Set /A size=%~z1*10/1024*10/1024
Set size=%size:~0,-2%.%size:~-2%

For /F "tokens=1-5 usebackq delims==: " %%i In (`"%path7Zip%\7z.exe" l -slt Temp\%~2`) Do If "%%i"=="Method" If Not "%%l"=="" Set rdict=%%l
If "%rdict:~-1%"=="m" (
	Set rdict1=%rdict:~,-1%
	GoTo :EOF
)
Set /A rdict-=21
Set rdict1=2
For /L %%i In (1,1,%rdict%) Do Set /A rdict1*=2
GoTo :EOF

:_Abort
COLOR 0C
Echo %~1 Создание аддона прервано^^!
Pause >Nul
Call :_DelTemp
Exit

:_TestSys
If Not Exist "%path7Zip%\7zG.exe" Call :_Abort "Неверный путь к архиватору 7-Zip."
For /F "tokens=1-4 usebackq" %%i In (`"%path7Zip%\7z.exe"`) Do (
 	If "%%i"=="7-Zip" (
 		If "%%j"=="[64]" (
			Set arch64=%%j
			Set Ver=%%k
			If "%%l"=="beta" Set Beta=%%l
			If "%%l"=="alpha" Set Beta=%%l
		) Else (
			Set Ver=%%j
			If "%%k"=="beta" Set Beta=%%k
			If "%%k"=="alpha" Set Beta=%%k
		)
	)
)
If %Ver% LSS 9.04 Call :_Abort "Старая версия архиватора 7-Zip. Обновите."
For /F "Tokens=1,2 Skip=1" %%i In ('WMIC OS Get FreePhysicalMemory^, TotalVisibleMemorySize') Do (
	Set /A Fram=%%i/1024, Aram=%%j/1024
	GoTo _End
)
:_End
Set /a dictM=(%Fram%-4)*10/115
For %%a In (16 24 32 48 64 96 128 192 256 384 512 768 1024) Do If %%a LEQ %dictM% Set dict=%%a
Call :_Limit
Ver
Echo Разрядность ОС	- %xOS%
Echo Версия 7-Zip	- %Ver% %Beta% %arch64%
Echo RAM всего	- %Aram% МБ
Echo RAM свободно	- %Fram% МБ 	(без учета фрагментации)
Echo Макс. словарь	- %dictM% МБ 	(исходя из свободных %Fram% МБ)
Echo Реком. словарь	- %dict% МБ 	(исходя из макс. словаря %dictM% МБ%limit%)
If Exist suff_size.txt For /F "tokens=1-2" %%i In (suff_size.txt) Do Echo Достат. словарь	- %%i МБ	^(исходя из размера данных %%j^)
If Defined dictUser (
	If Defined limit2 (
		Echo Польз. словарь	- %dictUser% МБ	^(будет использован %Sdict% МБ%limit2%^)
	) Else (
		Echo Польз. словарь	- %dictUser% МБ
		Set Sdict=%dictUser%
	)
) Else (
	Echo Польз. словарь	- не задан	^(будет использован рекомендованный %dict% МБ^)
	Set Sdict=%dict%
)
Echo.
Set comline=-mmt2 -m0=BCJ2 -m1=LZMA2:d%Sdict%m:fb273 -m2=LZMA2:d21:fb273 -m3=LZMA2:d21:fb273 -mb0:1 -mb0s1:2 -mb0s2:3
GoTo :EOF

:_Limit
If %xOS%==x64 GoTo :EOF
If %dict% GTR 128 Set limit= [предел x86]& Set dict=128
If Not Defined dictUser GoTo :EOF
If %dictUser% GTR 128 Set limit2= [предел x86]& Set Sdict=128
GoTo :EOF

:_DelTemp
RD /s /q Temp 1>Nul 2>&1
If Not Exist Temp GoTo :EOF
Ping -n 2 localhost>Nul
GoTo :_DelTemp

:Sec
Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF

:_sizedir
For /F "tokens=1-3" %%a In ('Dir %1 /-C /S /A:-D') Do (
	If !flag!==1 Set dirsize=%%c
	If "%%b"=="файлов:" (Set flag=1) Else Set flag=0
)
GoTo :EOF

Последний раз редактировалось gora, 15-05-2011 в 22:14.


Отправлено: 21:50, 15-05-2011 | #5


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
Title USB Manager
SetLocal EnableDelayedExpansion
Set err=0
Set cnt=0
Set choice=1
For /F "tokens=* delims=" %%a In ('usr list -s') Do Call :_parser "%%a"
If %cnt%==0 Exit
If %cnt%==1 GoTo :_OneDrv
Set choice=
Set disconnect=0
Set connect=0
Set buttons="Стоп все" "Вкл. все" "Отмена"
Set Mesg1=[Стоп все] - остановить все устройства~n[Вкл. все]~t  - вернуть все устройства обратно~n~n
For /L %%i In (1,1,%cnt%) Do (
	If "!status_drv%%i!"=="" (
		Set connect=1
		Set Mesg1=!Mesg1![Стоп !drv%%i!]~t  - остановить устройство !drv%%i!~n
		Set buttons=!buttons! "Стоп !drv%%i!"

	) Else (
		Set disconnect=1
		Set Mesg1=!Mesg1![Вкл. !drv%%i!]~t  - вернуть устройство !drv%%i! обратно *~n
		Set buttons=!buttons! "Вкл. !drv%%i!"
	)
)
If %connect%==1 (
rem Set Mesg1=!Mesg1!~n[Откл. все] - остановить все устройства
rem Set buttons=!buttons!"Откл. все" 
)
If %disconnect%==1 (
	Set Mesg1=!Mesg1!~n* Это действие также перезагрузит другие~n   устройства, подключенные к USB хабу
rem 	Set Mesg1=!Mesg1!~n[Вкл. все] - вернуть все устройства обратно~n* Это действие также перезагрузит другие~n   устройства, подключенные к USB хабу
rem Set buttons=!buttons!"Вкл. все" 
)

7zbut -msgbox "!Mesg1!" "USB Manager" db1:fl33:bw85:bpl3 !buttons!>nul
Set presskey=!errorlevel!
If !presskey!==20 Exit
If !presskey!==1 (
	Set cntRet=0
	For /L %%i In (1,1,%cnt%) Do If "!status_drv%%i!"=="" (
		Set /A cntRet +=1
		Set drvc=!drv%%i!
		Set listdrv=!listdrv!~n!fulldrv%%i!
		Call :_Stop !drv%%i!
	)
	If !cntRet!==1 (
		Call :_balloon "Устройство !drvc! остановлено"
	) Else Call :_balloon "Остановлены устройства:!listdrv!"
	Exit
)
If !presskey!==2 (
	Set cntRet=0
	For /L %%i In (1,1,%cnt%) Do If Not "!status_drv%%i!"=="" (
		Set /A cntRet +=1
		Set drvc=!drv%%i!
		Set listdrv=!listdrv!~n!fulldrv%%i!
		Call :_Return !drv%%i!
	)
	If !cntRet!==1 (
		Call :_balloon "Устройство !drvc! возвращено обратно"
	) Else Call :_balloon "Возвращены обратно устройства:!listdrv!"
	Exit
)
If !presskey! GTR 20 Set /A choice=presskey - 20
:_OneDrv
If "!status_drv%choice%!"=="" (
	Call :_Stop !drv%choice%!
	Call :_balloon "Устройство !drv%choice%! остановлено"
) Else (
	Call :_Return !drv%choice%!
	Call :_balloon "Устройство !drv%choice%! возвращено обратно"
)
Exit

:_Return
usr return -d %~1 >Nul
GoTo :EOF

:_Stop
usr stop -d %1 >Nul
Set err=%errorlevel%
If %err%==0 GoTo :EOF
If %err%==2 (
	usr wholocks -d %1>Nul
	Set err=!errorlevel!
	If !err!==5 GoTo :_message
	If !err!==6 GoTo :_message

	Set Mesg1=Устройство ~x28%1~x29 заблокировано и не может быть остановлено.~n~nФайл блокирующего процесса~n======================
	Set cntPr=0
	For /F "skip=4 tokens=1*" %%a In ('usr wholocks -d %1') Do Call :_lockproc "%%a" "%%b"
	If "!cntPr!"=="1" (
		Set Mesg1=!Mesg1!~n~n1. Остановить процесс ~q!proc!~q и повторить операцию~n2. ~qУбить~q процесс ~q!proc!~q и повторить операцию
	) Else (
		Set Mesg1=!Mesg1!~n~n1. Остановить ВСЕ блокирующие процессы и повторить операцию~n2. ~qУбить~q ВСЕ блокирующие процессы и повторить операцию
	)
	7zbut -msgbox "!Mesg1!" "USB Manager" db1:fl49 "1 вариант" "2 вариант" "Отмена">nul
	Set presskey=!errorlevel!
	If !presskey!==20 Exit
	If !presskey!==1 usr forcedstop -d %1 >Nul
	If !presskey!==2 For /L %%i In (1,1,!cntPr!) Do TaskKill /F /IM !proc%%i!>Nul
	GoTo :_Stop
)
:_message
If %err%==1 Set Mesg=Устройство %1 не найдено
If %err%==3 Set Mesg=Неверный синтаксис команды
If %err%==4 Set Mesg=Неизвестная команда
If %err%==5 Set Mesg=Не найдены процессы блокирующие устройство %1 или оно уже свободно
If %err%==6 Set Mesg=Произошла ошибка при поиске процессов блокирующих устройство %1
Call :_balloon "%Mesg%"
GoTo :EOF

:_lockproc
Set /A cntPr +=1
rem Set tab=
Set proc=%~1
Set proc!cntPr!=%~1
rem If "!proc:~7,1!"=="" Set tab=~t	
Set Mesg1=!Mesg1!~n%~2
GoTo :EOF

:_parser
Set /A cnt +=1
Set ta=%~1
Set fulldrv%cnt%=!ta:~3!
If Not "!ta!"=="!ta:safely removed=!" (
	Set status_drv%cnt%=1
	Set fulldrv%cnt%=!ta:~3,-20!
)
Set ta=!ta:*^(=!
Set drv%cnt%=!ta:~0,2!
GoTo :EOF

:_balloon
Start "" nircmd trayballoon "USB Manager" %1 "Zentimo.exe" 5000
Echo 
GoTo :EOF

Отправлено: 09:51, 16-05-2011 | #6


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
:: Кодировка файла 'Кирилица DOS' (866)
Set var=123456789
Echo 					Запись		Значение
Echo.
Echo Переменная полностью			%%var%%		%var%
Echo Первые три символа			%%var:~0,3%%	%var:~0,3%
Echo Последние три символа			%%var:~-3%%	%var:~-3%
Echo Три символа начиная с шестого		%%var:~5,3%%	%var:~5,3%
Echo Без первых трех символов		%%var:~3%%	%var:~3%
Echo Без последних трех символов		%%var:~0,-3%%	%var:~0,-3%
Echo Без первых двух и последних трех	%%var:~2,-3%%	%var:~2,-3%
Echo.
Echo Замена части переменной (45 на abc)	%%var:45=abc%%	%var:45=abc%
Echo Замена части переменной и символов
Echo до нее (23, и все что до этого, на xyz)	%%var:*23=xyz%%	%var:*23=xyz%
Echo Удаление части переменной (567)		%%var:567=%%	%var:567=%
Echo.
Echo ===============================================================================
Echo Запись	Значение
Echo.
Echo %%0	%0
Echo %%~0	%~0
Echo %%~f0	%~f0
Echo %%~s0	%~s0
Echo %%~d0	%~d0
Echo %%~p0	%~p0
Echo %%~n0	%~n0
Echo %%~x0	%~x0
Echo %%~a0	%~a0
Echo %%~t0	%~t0
Echo %%~z0	%~z0
Echo %%~dp0	%~dp0
Echo %%~nx0	%~nx0
Echo %%~sn0	%~sn0
Echo %%~sx0	%~sx0
Echo %%~snx0	%~snx0
Echo %%~ftza0	%~ftza0
Pause>Nul

Отправлено: 19:38, 26-05-2011 | #7


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
:: Кодировка файла 'Кирилица DOS' (866)
Set var=123456789
Echo 					Запись		Значение
Echo.
Echo Переменная полностью			%%var%%		%var%
Echo Первые три символа			%%var:~0,3%%	%var:~0,3%
Echo Последние три символа			%%var:~-3%%	%var:~-3%
Echo Три символа начиная с шестого		%%var:~5,3%%	%var:~5,3%
Echo Без первых трех символов		%%var:~3%%	%var:~3%
Echo Без последних трех символов		%%var:~0,-3%%	%var:~0,-3%
Echo Без первых двух и последних трех	%%var:~2,-3%%	%var:~2,-3%
Echo.
Echo Замена части переменной (45 на abc)	%%var:45=abc%%	%var:45=abc%
Echo Замена части переменной и символов
Echo до нее (23, и все что до этого, на xyz)	%%var:*23=xyz%%	%var:*23=xyz%
Echo Удаление части переменной (567)		%%var:567=%%	%var:567=%
Echo.
Echo ===============================================================================
Echo Запись	Значение
Echo.
Echo %%0	%0
Echo %%~0	%~0
Echo %%~f0	%~f0
Echo %%~s0	%~s0
Echo %%~d0	%~d0
Echo %%~p0	%~p0
Echo %%~n0	%~n0
Echo %%~x0	%~x0
Echo %%~a0	%~a0
Echo %%~t0	%~t0
Echo %%~z0	%~z0
Echo %%~dp0	%~dp0
Echo %%~nx0	%~nx0
Echo %%~sn0	%~sn0
Echo %%~sx0	%~sx0
Echo %%~snx0	%~snx0
Echo %%~ftza0	%~ftza0
Pause>Nul

Отправлено: 16:30, 27-05-2011 | #8


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
Setlocal enabledelayedexpansion
Rem Путь к папке со скриншотами
Set "input_dir=c:\musor\input"
Rem Размер превьюшек
Set "maxsize=200,200"
Rem Число превьюшек в ряду
Set nummax=4
Rem Путь к папке со скриншотами на FTP (слеши прямые)
Set "ftp=http://tools.oszone.net/Jekson07/pict"
Rem Путь к папке с программой IrfanView
Set "Irfan=%ProgramFiles%\IrfanView\i_view32.exe"

If Exist "%input_dir%\links.txt" Del /f /q "%input_dir%\links.txt"
For /R "%input_dir%" %%i In (*) Do (
	Set tmp_name=%%~ni
	If Not "!tmp_name:~-3!"=="_rz" If Not %%~xi==.txt (
		"%Irfan%" "%%i" /resize=^(%maxsize%^) /resample /aspectratio /convert="%input_dir%\%%~ni_rz%%~xi"
		Set "urls=!urls![url=%ftp%/%%~nxi][img]%ftp%/%%~ni_rz%%~xi[/img][/url]"
		Set /a num+=1
		If !num! GEQ %nummax% (
			Echo !urls!>>"%input_dir%\links.txt"
			Set num=0
			Set urls=
		)
	)
)
If Not !num!==0 Echo !urls!>>"%input_dir%\links.txt"
Exit

Отправлено: 22:02, 30-05-2011 | #9


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
Title USB Manager
SetLocal EnableDelayedExpansion
Set err=0
Set cnt=0
Set choice=1
For /F "tokens=* delims=" %%a In ('usr list -s') Do Call :_parser "%%a"
If %cnt%==0 Exit
If %cnt%==1 GoTo :_OneDrv
Set choice=
Set disconnect=0
Set connect=0
Set buttons="Стоп все" "Вкл. все" "Отмена"
Set Mesg1=[Стоп все] - остановить все устройства~n[Вкл. все]~t  - вернуть все устройства обратно~n~n
For /L %%i In (1,1,%cnt%) Do (
	If "!status_drv%%i!"=="" (
		Set connect=1
		Set Mesg1=!Mesg1![Стоп !drv%%i!]~t  - остановить устройство !drv%%i!~n
		Set buttons=!buttons! "Стоп !drv%%i!"

	) Else (
		Set disconnect=1
		Set Mesg1=!Mesg1![Вкл. !drv%%i!]~t  - вернуть устройство !drv%%i! обратно *~n
		Set buttons=!buttons! "Вкл. !drv%%i!"
	)
)
If %connect%==1 (
rem Set Mesg1=!Mesg1!~n[Откл. все] - остановить все устройства
rem Set buttons=!buttons!"Откл. все" 
)
If %disconnect%==1 (
	Set Mesg1=!Mesg1!~n* Это действие также перезагрузит другие~n   устройства, подключенные к USB хабу
rem 	Set Mesg1=!Mesg1!~n[Вкл. все] - вернуть все устройства обратно~n* Это действие также перезагрузит другие~n   устройства, подключенные к USB хабу
rem Set buttons=!buttons!"Вкл. все" 
)

7zbut -msgbox "!Mesg1!" "USB Manager" db1:fl33:bw85:bpl3 !buttons!>nul
Set presskey=!errorlevel!
If !presskey!==20 Exit
If !presskey!==1 (
	Set cntRet=0
	For /L %%i In (1,1,%cnt%) Do If "!status_drv%%i!"=="" (
		Set /A cntRet +=1
		Set drvc=!drv%%i!
		Set listdrv=!listdrv!~n!fulldrv%%i!
		Call :_Stop !drv%%i!
	)
	If !cntRet!==1 (
		Call :_balloon "Устройство !drvc! остановлено"
	) Else Call :_balloon "Остановлены устройства:!listdrv!"
	Exit
)
If !presskey!==2 (
	Set cntRet=0
	For /L %%i In (1,1,%cnt%) Do If Not "!status_drv%%i!"=="" (
		Set /A cntRet +=1
		Set drvc=!drv%%i!
		Set listdrv=!listdrv!~n!fulldrv%%i!
		Call :_Return !drv%%i!
	)
	If !cntRet!==1 (
		Call :_balloon "Устройство !drvc! возвращено обратно"
	) Else Call :_balloon "Возвращены обратно устройства:!listdrv!"
	Exit
)
If !presskey! GTR 20 Set /A choice=presskey - 20
:_OneDrv
If "!status_drv%choice%!"=="" (
	Call :_Stop !drv%choice%!
	Call :_balloon "Устройство !drv%choice%! остановлено"
) Else (
	Call :_Return !drv%choice%!
	Call :_balloon "Устройство !drv%choice%! возвращено обратно"
)
Exit

:_Return
usr return -d %~1 >Nul
GoTo :EOF

:_Stop
usr stop -d %1 >Nul
Set err=%errorlevel%
If %err%==0 GoTo :EOF
If %err%==2 (
	usr wholocks -d %1>Nul
	Set err=!errorlevel!
	If !err!==5 GoTo :_message
	If !err!==6 GoTo :_message

	Set Mesg1=Устройство ~x28%1~x29 заблокировано и не может быть остановлено.~n~nФайл блокирующего процесса~n======================
	Set cntPr=0
	For /F "skip=4 tokens=1*" %%a In ('usr wholocks -d %1') Do Call :_lockproc "%%a" "%%b"
	If "!cntPr!"=="1" (
		Set Mesg1=!Mesg1!~n~n1. Остановить процесс ~q!proc!~q и повторить операцию~n2. ~qУбить~q процесс ~q!proc!~q и повторить операцию
	) Else (
		Set Mesg1=!Mesg1!~n~n1. Остановить ВСЕ блокирующие процессы и повторить операцию~n2. ~qУбить~q ВСЕ блокирующие процессы и повторить операцию
	)
	7zbut -msgbox "!Mesg1!" "USB Manager" db1:fl49 "1 вариант" "2 вариант" "Отмена">nul
	Set presskey=!errorlevel!
	If !presskey!==20 Exit
	If !presskey!==1 usr forcedstop -d %1 >Nul
	If !presskey!==2 For /L %%i In (1,1,!cntPr!) Do TaskKill /F /IM !proc%%i!>Nul
	GoTo :_Stop
)
:_message
If %err%==1 Set Mesg=Устройство %1 не найдено
If %err%==3 Set Mesg=Неверный синтаксис команды
If %err%==4 Set Mesg=Неизвестная команда
If %err%==5 Set Mesg=Не найдены процессы блокирующие устройство %1 или оно уже свободно
If %err%==6 Set Mesg=Произошла ошибка при поиске процессов блокирующих устройство %1
Call :_balloon "%Mesg%"
GoTo :EOF

:_lockproc
Set /A cntPr +=1
rem Set tab=
Set proc=%~1
Set proc!cntPr!=%~1
rem If "!proc:~7,1!"=="" Set tab=~t	
Set Mesg1=!Mesg1!~n%~2
GoTo :EOF

:_parser
Set /A cnt +=1
Set ta=%~1
Set fulldrv%cnt%=!ta:~3!
If Not "!ta!"=="!ta:safely removed=!" (
	Set status_drv%cnt%=1
	Set fulldrv%cnt%=!ta:~3,-20!
)
Set ta=!ta:*^(=!
Set drv%cnt%=!ta:~0,2!
GoTo :EOF

:_balloon
Start "" nircmd trayballoon "USB Manager" %1 "Zentimo.exe" 5000
Echo 
GoTo :EOF

Отправлено: 09:44, 31-05-2011 | #10



Компьютерный форум OSzone.net » Зона тестирования » Тест-форум » Тестирование утилиты для подсветки батников

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Новая версия утилиты RSAT для Windows 7 SP1 доступна для загрузки OSZone News Новости и события Microsoft 0 10-04-2011 01:30
Оптимизация за счет батников Valik87 Microsoft Windows NT/2000/2003 3 04-12-2009 14:32
Драйвер для подсветки и мультимедиа Sony Vaio VGN AR520E? Kondrat6407 Поиск драйверов, прошивок и руководств 0 01-10-2008 23:41
Системные утилиты для WinXP BigMike Программное обеспечение Windows 10 25-06-2008 00:24
Утилиты для управление портами Yazago Программное обеспечение Windows 1 13-06-2008 20:19




 
Переход