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

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

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Ykidia



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

Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set "toolmountvol=%~dp0tools\mountvol.exe"
set "toolraidcfg=%~dp0tools\raidcfg32p.exe"
set "tooldiskpart=%~dp0tools\diskpart.exe"
set "toolformat=%~dp0tools\format.com"
 
:PARAMS
echo ---------------------------------------1---------------------------------------
set driveletterneeded=%1
set driveletterslist=C D E F G H I J K L M N O P Q R S T U V W X Y Z B A
for %%i in (%driveletterslist%) do (
    if %%i==!driveletterneeded! (
        shift
        goto :DRVLETOK
    )
)
set driveletterneeded=E
echo Defaulting RAID drive letter to !driveletterneeded!:\.
 
:DRVLETOK
set newfilesystemntfs=ntfs /v:DATA /q /y
if /i "%1"=="exfat" (
  set newfilesystemparams=exfat /v:DATA /q /a:1M /y
) else (
  set newfilesystemparams=%newfilesystemntfs%
)
 
:FINDFREE
echo ---------------------------------------2---------------------------------------
if "!driveletterneeded!"=="" (set driveletterneeded="0")
set firstdriveletter="0"
for %%i in (%driveletterslist%) do (
    set drivelettertype%%i=free
    "%toolmountvol%" %%i:\ /L 2>nul >nul&&(
        set drivelettertype%%i=mounted
        for /f %%a in ('^("%toolmountvol%" %%i:\ /L^) ^| findstr "\\"') do (set driveletterdata%%i=%%a)
        echo %%i:\ mounted as a local drive: !driveletterdata%%i!
    )||(
        net use %%i: 2>nul >nul&&(
            set drivelettertype%%i=network
            for /f "tokens=3" %%a in ('net use %%i: ^| findstr "\\"') do (set driveletterdata%%i=%%a)
            echo %%i:\ connected to a network share: !driveletterdata%%i!
        )||(
            for /f %%j in ('subst 2^>nul') do (
                if %%j==%%i:\: (
                    set drivelettertype%%i=substed
                    for /f "tokens=2 delims=>" %%a in ('subst ^| findstr "%%i:\\:"') do (set driveletterdata%%i=%%a)
                    echo %%i:\ substed to a local path: !driveletterdata%%i!
                )
            )
            if "!drivelettertype%%i!"=="free" (
                cd %%i: 2>nul >nul &&(
                    echo %%i:\ is used in anyway.
                )||(
                    if !firstdriveletter!=="0" (
                        set firstdriveletter=%%i
                    )
                    echo %%i:\ is really FREE.
                )
            )
        )
    )
    if NOT "!drivelettertype%driveletterneeded%!"=="" (
        if NOT !firstdriveletter!=="0" (
            goto :REMOUNT
        )
    )
)
echo Free drive letters not found.
goto :EXIT
 
:REMOUNT
echo ---------------------------------------3---------------------------------------
set driveletterraid=!firstdriveletter!
set drivelettertounmount="!drivelettertype%driveletterneeded%!"
if NOT !drivelettertounmount!=="free" (
    if !drivelettertounmount!=="mounted" (
        "%toolmountvol%" !driveletterneeded!: /D >nul &&(
            "%toolmountvol%" /R 2>nul >nul
            "%toolmountvol%" !firstdriveletter!: !driveletterdata%driveletterneeded%! 2>nul >nul &&(
                echo !driveletterneeded!:\ was successfully remounted to !firstdriveletter!:\.
                set driveletterraid=!driveletterneeded!
            )||(
                echo !driveletterneeded!:\ to !firstdriveletter!:\ remount failed.
            )
        )||(
            echo !driveletterneeded!:\ to !firstdriveletter!:\ remount failed.
        )
    ) else (
        if !drivelettertounmount!=="network" (
            net use !driveletterneeded!: /DELETE /YES &&(
                net use !firstdriveletter!: !driveletterdata%driveletterneeded%! 2>nul >nul &&(
                    echo !driveletterneeded!:\ was successfully reconnected to !firstdriveletter!:\.
                    set driveletterraid=!driveletterneeded!
                )||(
                    echo !driveletterneeded!:\ to !firstdriveletter!:\ reconnect failed.
                )
            )||(
                echo !driveletterneeded!:\ to !firstdriveletter!:\ reconnect failed.
            )
        ) else (
            if !drivelettertounmount!=="substed" (
                subst !driveletterneeded!: /D &&(
                    subst !firstdriveletter!: !driveletterdata%driveletterneeded%! 2>nul >nul &&(
                        echo !driveletterneeded!:\ was successfully resubsted to !firstdriveletter!:\.
                        set driveletterraid=!driveletterneeded!
                    )||(
                        echo !driveletterneeded!:\ to !firstdriveletter!:\ resubst failed.
                    )
                )||(
                    echo !driveletterneeded!:\ to !firstdriveletter!:\ resubst failed.
                )
            )
        )
    )
    if NOT !driveletterraid!==!driveletterneeded! (
        echo Cannot free !driveletterneeded!:\
    )
) else (
    set driveletterraid=!driveletterneeded!
)
 
:RESET
echo ---------------------------------------4---------------------------------------
"%toolraidcfg%" /Y /D:Volume0
"%toolraidcfg%" /Y /DS:0 1 2 3 4 5 /X
"%toolraidcfg%" /Y /C:Volume0 /SS:128 /L:0 /DS:0 1 2 3 4 5 ||(
    echo Error creating RAID volume.
    goto :EXIT
)
set diskpartscriptname="%temp%\initvol.diskpart"
set raiddisknumber=-1
for /l %%i in (0 1 10) do (
    echo select disk %%i >%diskpartscriptname%
    echo detail disk >>%diskpartscriptname%
    echo exit >>%diskpartscriptname%
    for /f %%a in ('^("%tooldiskpart%" /s !diskpartscriptname!^) ^| findstr "RAID"') do (
        set raiddisknumber=%%i
        goto :FOUNDRAID
    )
)
echo RAID volume not found.
goto :EXIT
 
:FOUNDRAID
echo select disk !raiddisknumber!>%diskpartscriptname%
echo clean>>%diskpartscriptname%
echo list partition>>%diskpartscriptname%
echo convert gpt>>%diskpartscriptname%
echo create partition primary>>%diskpartscriptname%
echo select partition ^2>>%diskpartscriptname%
echo assign letter=!driveletterraid!:>>%diskpartscriptname%
echo exit>>%diskpartscriptname%
"%tooldiskpart%" /s %diskpartscriptname%
del %diskpartscriptname%>nul
 
:FORMAT
echo ---------------------------------------5---------------------------------------
"%toolformat%" !driveletterraid!: /fs:%newfilesystemparams% ||("%toolformat%" !driveletterraid!: /fs:%newfilesystemntfs%)
 
echo.
echo RAID drive letter is !driveletterraid!:\.
echo.
 
:EXIT
endlocal

Всего записей: 242 | Зарегистр. 03-03-2005 | Отправлено: 19:12 04-02-2010 | Исправлено: Ykidia, 19:20 04-02-2010
   

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

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru