Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Oracle VM VirtualBox (часть 2)

Модерирует : gyra, Maz

Maz (15-12-2016 00:05): Oracle VM VirtualBox (часть 3)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

YuS_two



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
rem v2.1
 
rem путь к файлу конфигурации VirtualBox
set "Vbox=%userprofile%\.VirtualBox\VirtualBox.xml"
 
rem путь к файлу vboxmanage.exe должен быть прописан в системной переменной Path,
rem либо для корректного запуска необходимо указать абсолютный путь:
set "vbman=vboxmanage.exe"
 
rem -----
rem Инициализация переменных, для поддерживаемых расширений. Число расширений
rem можно увеличить добавлением переменных extN, по аналогии с существующими.
rem Кроме того, необходимо указать их количество в переменной n
set "ext1=*.vdi"
set "ext2=*.vhd"
set "ext3="
set n=2
rem -----
 
for /l %%g in (1,1,%n%) do (
    if defined ext%%g (call :dper %%g)
)
for /l %%h in (1,1,%n%) do (
    if defined ext%%h (call :fper %%h)
)
goto pp
:dper
set vn=%1
call set "dext=%%dext%% "%%ext%vn%%%""
exit /b
:fper
set nv=%1
call set "fext=%%fext%% /c:"%%ext%nv%:~1%%""
exit /b
:pp
echo Сценарий упаковки файла динамического виртуального диска Oracle VirtualBox.
echo Перед упаковкой, необходимо в загруженной гостевой ОС выполнить максимальную
echo дефрагментацию, затем заполнить нулями свободное пространство ^(для этого
echo хорошо подходит программа sDelete ^(sysinternals.com^)^).
echo Примечание: Имя упаковываемого, неподключенного файла виртуального диска НЕ
echo должно совпадать с любым подключенным файлом, либо абсолютный путь в сценарии
echo должен быть указан только от реально подключенного виртуального диска.
echo.
choice /c yn /m "Продолжаем "
if "%errorlevel%"=="1" goto begin
echo.
echo Выходим
echo.
pause&&exit
:begin
choice /n /c 12 /m "Выберите 1 - для работы с подключенными дисками, 2 - для указания абсолютного пути: "
goto disk%errorlevel%
:disk1
set "vm=%Vbox%"
goto run
:disk2
set "vm="
:run
cls
echo Выполните следующие действия:
echo.
pushd "%~dp0"
if not exist "%vm%" goto out
echo Список имен подключенных машин:
set cnt=0  
for /f tokens^=2^ delims^=^" %%i in ('^<"%vm%" find "MachineEntry"') do call :list "%%~i"
echo.
goto out
:list
if "%~1"=="" (echo Нет подключенных машин&&goto out)
set /a cnt+=1
set "vbu%cnt%=%~1"
call set "tmp=%%vbu%cnt%%%"
for /f "tokens=2 delims=: " %%j in ('%vbman% showvminfo %tmp%') do echo %cnt%. %%j&&goto ex
:ex  
exit /b
:vbox
set ct=0
set "v=%~1"
%vbman% showvminfo %v% |findstr /i %fext% >nul
if errorlevel 1 (echo Диски не найдены&&exit /b 1)
for /f "tokens=3,4 delims=)(" %%a in ('%vbman% showvminfo %v% ^|findstr /i %fext%') do (
    call :hd "%%~a" "%%~b"
)
exit /b
:hd
set "$1=%~1"
set "$2=%~2"
set /a ct+=1
set hd%ct%=%$2:~6%
echo %ct% %~nx1
exit /b
:out
if exist "%vm%" (
    echo Выберите номер подключенной VM
    set /p x="(q=выход): "
) else (
    echo Укажите абсолютный путь к каталогу с виртуальным диском  
    set /p x="(q=выход): "
    goto q2
)
:q1
if "%x%"=="" goto begin
if "%x%"=="q" (goto chce)
if defined vbu%x% (
    echo.
    echo Список дисков в выбранной виртуальной машине:
    echo.
    call :vbox "%%vbu%x%%%" ||goto chce
) else (
    goto begin
)
goto file
:q2
if "%x%"=="" goto begin
if "%x%"=="q" (goto chce)
set kon=0
for /l %%k in (1,1,%n%) do (
    if defined ext%%k call :tm %%k
)
goto tt
:tm
set dn=%1
call set prn=%%ext%dn%%%
if exist "%x%\%prn%" set /a kon+=1
exit /b
:tt
if %kon%==0 (echo.&&echo В этом каталоге нет файлов виртуальных дисков&&echo.&&goto chce)
:cont
cd /d "%x%"
echo.
echo Список файлов виртуального диска:
echo.
set cnt=0
for /f "delims=" %%a in ('dir /a-d/b %dext%') do (
    call :per "%%~a"
)
goto file
:per
set /a cnt+=1
set var%cnt%=%~1
call echo %cnt%. %%var%cnt%%%
exit /b
:file
echo.
set /p y="Введите номер виртуального диска: "
if defined hd%y% (call set "dsk=%%hd%y%%%"&&goto pusk)
call set "dsk=%%var%y%%%"
if not defined dsk (echo.&&echo Нет такого диска&&goto chce) else (goto pusk)
pause&&exit
:chce
choice /c yn /m "Выходим "
goto answ%errorlevel%
echo Ошибка. Выходим
pause&&exit
:answ1
echo Выход
timeout /t 3
exit
:answ2
goto begin
:pusk
echo.
echo Запускаем упаковку:
echo.
%vbman% modifyhd "%dsk%" --compact
if errorlevel 1 (
    echo.
    echo.  
    echo.  Ошибка!!! Имя файла виртуального диска совпадает с именем  
    echo.  подключенного файла, при отличающихся абсолютных путях    
    echo.  
    echo.
)
echo.
goto chce
:answ255
:disk255
echo Ошибка&&pause&&exit

Всего записей: 399 | Зарегистр. 28-03-2016 | Отправлено: 18:05 30-05-2016 | Исправлено: YuS_two, 22:40 03-06-2016
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Oracle VM VirtualBox (часть 2)
Maz (15-12-2016 00:05): Oracle VM VirtualBox (часть 3)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru