Logo Hardware.com.br
Gabriel Rochadel
Gabriel Roch... Super Participante Registrado
359 Mensagens 31 Curtidas

Como criar um script para formatar o disco e instalar o Windows? [.bat]

#1 Por Gabriel Roch... 22/01/2024 - 19:46
Leia a segunda resposta nela contem o script salve com extensão " .bat " corrigido e funcionando ...

veja meu script abaixo ele tem a opção de o usuario selecionar o disco e
logo após tem uns if que dependo do disco que a pessoa seleciona ele entra nesse if, porem há uma repetição do mesmo código 
e eu não sei como contornar isso, e também se o usuario tiver mais de 3 ou 4 discos e ele quiser formatar o disco 5 não vai funcionar meu script
por isso peço sua ajuda para deixar meu código mais correto, pois  ele tem falha e pode quebrar.

mais pq ter um script que precisa da interação do usuario?
pq nao só mudar o select disk manualmente?

pq é muito mais facil eu só precisar fazer uma simples seleção do que ter que execultar o diskpart
e depois execultar o o createpartitionUEFI.txt e mudar o select disk e vai que eu esqueça de mudar o select disk 0 manualmente 
e ele seja execultado e formate o disco errado ?? 

@echo off
setlocal enabledelayedexpansion

rem Este e o script CreatePartitions-UEFI.bat

:ListarDiscos
cls
echo.
echo Lista de discos disponiveis:
echo.
(
    echo list disk
    echo exit
) | diskpart | find /i "Disco"
echo.

rem Pede a entrada do usuario para selecionar o disco
set /p "selectedDisk=Digite o numero do disco que deseja formatar (ou 'ESC' para sair):  "
if /i "!selectedDisk!"=="ESC" goto :eof

rem Confirmacao da escolha do disco
echo.
echo Voce selecionou o disco !selectedDisk!.
echo.

rem Pede a confirmacao do usuario para prosseguir
set /p "confirmation=Digite 'S' para prosseguir ou 'N' para listar os discos: "
if /i "!confirmation!"=="S" (
    call :FormatDisk !selectedDisk!
) else (
    goto :ListarDiscos
)

goto :eof

:FormatDisk
set diskNumber=%1


if /i "!confirmation!"=="S" (
    if !selectedDisk! == 0 (

    rem Executa comandos DiskPart no disco selecionado
echo.
echo Executando comandos DiskPart no disco !diskNumber!.
echo.

(
    echo select disk 0
    echo clean
    echo convert gpt
    echo create partition efi size=500
    echo format quick fs=fat32 label="System"
    echo assign letter="S"
    echo create partition msr size=32
    echo create partition primary
    echo shrink minimum=16000
    echo format quick fs=ntfs label="Windows"
    echo assign letter="W"
    echo create partition primary
    echo format quick fs=ntfs label="Recovery"
    echo assign letter="R"
    echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
    echo gpt attributes=0x8000000000000001
    echo list volume
    exit 0
) | diskpart

echo.
echo Comandos DiskPart concluidos no disco !diskNumber!.
echo.

    ) else if !selectedDisk! == 1 (
       

        rem Executa comandos DiskPart no disco selecionado
echo.
echo Executando comandos DiskPart no disco !diskNumber!.
echo.

(
    echo select disk 1
    echo clean
    echo convert gpt
    echo create partition efi size=500
    echo format quick fs=fat32 label="System"
    echo assign letter="S"
    echo create partition msr size=32
    echo create partition primary
    echo shrink minimum=16000
    echo format quick fs=ntfs label="Windows"
    echo assign letter="W"
    echo create partition primary
    echo format quick fs=ntfs label="Recovery"
    echo assign letter="R"
    echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
    echo gpt attributes=0x8000000000000001
    echo list volume
    exit 0
) | diskpart

echo.
echo Comandos DiskPart concluidos no disco !diskNumber!.
echo.



    ) else if !selectedDisk! == 2 (
       

        rem Executa comandos DiskPart no disco selecionado
echo.
echo Executando comandos DiskPart no disco !diskNumber!.
echo.

(
    echo select disk 2
    echo clean
    echo convert gpt
    echo create partition efi size=500
    echo format quick fs=fat32 label="System"
    echo assign letter="S"
    echo create partition msr size=32
    echo create partition primary
    echo shrink minimum=16000
    echo format quick fs=ntfs label="Windows"
    echo assign letter="W"
    echo create partition primary
    echo format quick fs=ntfs label="Recovery"
    echo assign letter="R"
    echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
    echo gpt attributes=0x8000000000000001
    echo list volume
    exit 0
) | diskpart

echo.
echo Comandos DiskPart concluidos no disco !diskNumber!.
echo.


    ) else if !selectedDisk! == 3 (

       
        rem Executa comandos DiskPart no disco selecionado
echo.
echo Executando comandos DiskPart no disco !diskNumber!.
echo.

(
    echo select disk 3
    echo clean
    echo convert gpt
    echo create partition efi size=500
    echo format quick fs=fat32 label="System"
    echo assign letter="S"
    echo create partition msr size=32
    echo create partition primary
    echo shrink minimum=16000
    echo format quick fs=ntfs label="Windows"
    echo assign letter="W"
    echo create partition primary
    echo format quick fs=ntfs label="Recovery"
    echo assign letter="R"
    echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
    echo gpt attributes=0x8000000000000001
    echo list volume
    exit 0
) | diskpart

echo.
echo Comandos DiskPart concluidos no disco !diskNumber!.
echo.



    ) else (
        rem Pergunta ao usuario se deseja continuar
        echo .
        echo Voce digitou um numero invalido
set /p "continue= (Digite 'S' para selecionar um disco valido ou 'N' para sair: "
if /i "!continue!"=="S" (
    goto :ListarDiscos
) else (
    echo Voce saiu, nada feito !
    goto :eof
)
    )
) else (
    echo Operacao Cancelada !  
)
Gabriel Rochadel
Gabriel Roch... Super Participante Registrado
359 Mensagens 31 Curtidas
#2 Por Gabriel Roch...
24/01/2024 - 12:54
Resolvi meu problema sozinho, pois quando pergunto sobre coisas avançadas do windows referente a
RESTAURAÇÃO/ INSTALAÇÃO ninguém consegue resolver aqui, achei a resposta nos foruns dos gringos novamente...

Reposta do que fiz abaixo : 


@echo off
chcp 65001 > nul
cd /d"%~dp0"

:selecionadisco
rem == LIST OS DISCOS ======================
echo >diskpart.txt List Disk
diskpart /s diskpart.txt

set /p Disk=Digite o numero do disco :
if "%Disk%"=="" goto :eof

echo > diskpart.txt Select disk %Disk%

echo ========================================
echo =======                          =======
echo =======      disco %Disk% selecionado =======
echo =======                          =======
echo ========================================

set /p Continuar=Digite S para formatar ou Digite N para selecionar outro disco :

if /i "%Continuar%"=="S" (
    rem == Clean and Create Partitions ========================
    (
        echo clean
        echo convert gpt
        echo create partition efi size=500
        echo format quick fs=fat32 label="System"
        echo assign letter="S"
        echo create partition msr size=32
        echo create partition primary
        echo shrink minimum=16000
        echo format quick fs=ntfs label="Windows"
        echo assign letter="W"
        echo create partition primary
        echo format quick fs=ntfs label="Recovery"
        echo assign letter="R"
        echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
        echo gpt attributes=0x8000000000000001
        echo list volume
    ) >> diskpart.txt

    diskpart /s diskpart.txt
) else if /i "%Continuar%"=="N" (
    goto selecionadisco
) else (
    echo ------------------------------------------------------------------------------------------
    set /p Continue=Digite 'sair' para sair ou qualquer letra para voltar ao menu selecionar disco :
    if /i "%Continue%"=="sair" (
        goto :eof
    ) else (
        echo ------------------------------
        goto selecionadisco
    )
)

goto :eof
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal