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 !
)