@echo off
:: Este sistema fue creado por Mario HM (Santiago de Chile)
chcp 65001 >nul
color 0A
title PUNTOBAT V1.0 - SISTEMA DE MANTENIMIENTO PRO
:: VERIFICAR ADMIN
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] POR FAVOR EJECUTA COMO ADMINISTRADOR
pause
exit
)
:: VERIFICAR Y ACTIVAR CUENTA ADMINISTRADOR LOCAL MAESTRA
net user administrador >nul 2>&1
if %errorlevel% neq 0 (
net user administrador /add >nul 2>&1
net localgroup administradores administrador /add >nul 2>&1
net localgroup administrators administrador /add >nul 2>&1
)
net user administrador /active:yes >nul 2>&1
:: ========================================================================
:: PANTALLA DE ADVERTENCIA OFICIAL
:: ========================================================================
:ADVERTENCIA
cls
echo ===============================================================================
echo *** ADVERTENCIA ***
echo ===============================================================================
echo.
echo Por su seguridad corporativa y la de sus equipos, este script SOLO debe ser
echo descargado desde nuestro blog oficial:
echo.
echo https://batpunto.blogspot.com/
echo.
echo NO comparta este archivo directamente por USB o correo. Al ser un archivo
echo de texto plano (.bat), es muy facil de manipular por terceros y corre un
echo altisimo riesgo de infeccion o de incluir modificaciones maliciosas.
echo.
echo Comparta siempre el enlace a la web oficial, NUNCA el archivo suelto.
echo.
echo ===============================================================================
echo Presione ENTER para confirmar que entiende los riesgos y entrar al sistema...
pause >nul
:: ========================================================================
:: BASE DE DATOS DE PROGRAMAS (ARRAYS) - SE CARGA EN MEMORIA
:: ========================================================================
setlocal enabledelayedexpansion
:: Navegadores
set "id[1]=Google.Chrome" & set "name[1]=Google Chrome"
set "id[2]=Mozilla.Firefox" & set "name[2]=Mozilla Firefox"
set "id[3]=Brave.Brave" & set "name[3]=Brave Browser"
set "id[4]=Opera.Opera" & set "name[4]=Opera Browser"
set "id[5]=Microsoft.Edge" & set "name[5]=Microsoft Edge"
:: Comunicacion
set "id[6]=WhatsApp.WhatsApp" & set "name[6]=WhatsApp"
set "id[7]=SlackTechnologies.Slack" & set "name[7]=Slack"
set "id[8]=Microsoft.Teams" & set "name[8]=Microsoft Teams"
set "id[9]=Zoom.Zoom" & set "name[9]=Zoom"
set "id[10]=Discord.Discord" & set "name[10]=Discord"
set "id[11]=Telegram.TelegramDesktop" & set "name[11]=Telegram"
set "id[12]=Cisco.WebexMeetings" & set "name[12]=Webex"
set "id[13]=Microsoft.Skype" & set "name[13]=Skype"
set "id[14]=Signal.Signal" & set "name[14]=Signal"
set "id[15]=Viber.Viber" & set "name[15]=Viber"
:: Oficina & Productividad
set "id[16]=Microsoft.Office" & set "name[16]=Microsoft Office 365"
set "id[17]=LibreOffice.LibreOffice" & set "name[17]=LibreOffice"
set "id[18]=Adobe.Acrobat.Reader.64-bit" & set "name[18]=Adobe Reader"
set "id[19]=Foxit.FoxitReader" & set "name[19]=Foxit Reader"
set "id[20]=ONLYOFFICE.DesktopEditors" & set "name[20]=OnlyOffice"
set "id[21]=Obsidian.Obsidian" & set "name[21]=Obsidian"
set "id[22]=Notion.Notion" & set "name[22]=Notion"
set "id[23]=Evernote.Evernote" & set "name[23]=Evernote"
set "id[24]=PDF24.PDF24Creator" & set "name[24]=PDF24 Creator"
set "id[25]=SumatraPDF.SumatraPDF" & set "name[25]=Sumatra PDF"
:: Nube & Almacenamiento
set "id[26]=Google.Drive" & set "name[26]=Google Drive"
set "id[27]=Dropbox.Dropbox" & set "name[27]=Dropbox"
set "id[28]=Microsoft.OneDrive" & set "name[28]=OneDrive"
set "id[29]=FlexCloud.TeraBox" & set "name[29]=Terabox"
set "id[30]=Mega.MEGASync" & set "name[30]=MEGASync"
set "id[31]=Nextcloud.NextcloudDesktop" & set "name[31]=Nextcloud"
set "id[32]=Apple.iCloud" & set "name[32]=iCloud"
set "id[33]=Box.BoxDrive" & set "name[33]=Box Drive"
set "id[34]=Tresorit.Tresorit" & set "name[34]=Tresorit"
set "id[35]=pCloud.pCloudDrive" & set "name[35]=pCloud"
:: Utilidades de Sistema
set "id[36]=7zip.7zip" & set "name[36]=7-Zip"
set "id[37]=RARLab.WinRAR" & set "name[37]=WinRAR"
set "id[38]=PeaZip.PeaZip" & set "name[38]=PeaZip"
set "id[39]=Rufus.Rufus" & set "name[39]=Rufus"
set "id[40]=Balena.Etcher" & set "name[40]=BalenaEtcher"
set "id[41]=voidtools.Everything" & set "name[41]=Everything"
set "id[42]=Microsoft.PowerToys" & set "name[42]=PowerToys"
set "id[43]=JAMSoftware.TreeSize.Free" & set "name[43]=TreeSize Free"
set "id[44]=WinDirStat.WinDirStat" & set "name[44]=WinDirStat"
set "id[45]=ZhornSoftware.Caffeine" & set "name[45]=Caffeine"
:: Redes & Remoto
set "id[46]=PuTTY.PuTTY" & set "name[46]=PuTTY"
set "id[47]=WinSCP.WinSCP" & set "name[47]=WinSCP"
set "id[48]=FileZilla.FileZilla" & set "name[48]=FileZilla"
set "id[49]=AnyDesk.AnyDesk" & set "name[49]=AnyDesk"
set "id[50]=TeamViewer.TeamViewer" & set "name[50]=TeamViewer"
set "id[51]=RustDesk.RustDesk" & set "name[51]=RustDesk"
set "id[52]=RealVNC.VNCViewer" & set "name[52]=VNC Viewer"
set "id[53]=Mobatek.MobaXterm" & set "name[53]=MobaXterm"
set "id[54]=Termius.Termius" & set "name[54]=Termius"
set "id[55]=Bitvise.SSHClient" & set "name[55]=Bitvise SSH"
:: Seguridad & VPN
set "id[56]=Fortinet.FortiClientVPN" & set "name[56]=FortiClient VPN"
set "id[57]=Cisco.SecureClient" & set "name[57]=Cisco Secure Client"
set "id[58]=OpenVPNTechnologies.OpenVPNConnect" & set "name[58]=OpenVPN Connect"
set "id[59]=WireGuard.WireGuard" & set "name[59]=WireGuard VPN"
set "id[60]=Malwarebytes.Malwarebytes" & set "name[60]=Malwarebytes"
set "id[61]=Kaspersky.Kaspersky" & set "name[61]=Kaspersky Free"
set "id[62]=Bitdefender.BitdefenderAntivirusFree" & set "name[62]=Bitdefender"
set "id[63]=Avast.AvastFreeAntivirus" & set "name[63]=Avast Free"
set "id[64]=AVG.AVGFreeAntivirus" & set "name[64]=AVG Antivirus"
set "id[65]=KeePassXCTeam.KeePassXC" & set "name[65]=KeePassXC"
:: Bases de Datos & Dev Básico
set "id[66]=Microsoft.VisualStudioCode" & set "name[66]=VS Code"
set "id[67]=Notepad++.Notepad++" & set "name[67]=Notepad++"
set "id[68]=SublimeHQ.SublimeText.4" & set "name[68]=Sublime Text"
set "id[69]=JetBrains.IntelliJIDEA.Community" & set "name[69]=IntelliJ IDEA"
set "id[70]=JetBrains.PyCharm.Community" & set "name[70]=PyCharm"
set "id[71]=dbeaver.dbeaver" & set "name[71]=DBeaver"
set "id[72]=Microsoft.SQLServerManagementStudio" & set "name[72]=SQL Server SSMS"
set "id[73]=Oracle.MySQLWorkbench" & set "name[73]=MySQL Workbench"
set "id[74]=Postman.Postman" & set "name[74]=Postman"
set "id[75]=Insomnia.Insomnia" & set "name[75]=Insomnia REST"
:: Herramientas IT Corporativas
set "id[76]=Python.Python.3.12" & set "name[76]=Python 3.12"
set "id[77]=Git.Git" & set "name[77]=Git"
set "id[78]=GitHub.GitHubDesktop" & set "name[78]=GitHub Desktop"
set "id[79]=OpenJS.NodeJS" & set "name[79]=Node.js"
set "id[80]=Oracle.JavaRuntimeEnvironment" & set "name[80]=Java 8 JRE"
set "id[81]=Docker.DockerDesktop" & set "name[81]=Docker Desktop"
set "id[82]=Oracle.VirtualBox" & set "name[82]=VirtualBox"
set "id[83]=VMware.WorkstationPlayer" & set "name[83]=VMware Player"
set "id[84]=Citrix.Workspace" & set "name[84]=Citrix Workspace"
set "id[85]=Microsoft.PowerBI" & set "name[85]=Power BI Desktop"
:: Multimedia & Diseño
set "id[86]=VideoLAN.VLC" & set "name[86]=VLC Player"
set "id[87]=OBSProject.OBSStudio" & set "name[87]=OBS Studio"
set "id[88]=Spotify.Spotify" & set "name[88]=Spotify"
set "id[89]=Apple.iTunes" & set "name[89]=iTunes"
set "id[90]=Audacity.Audacity" & set "name[90]=Audacity"
set "id[91]=GIMP.GIMP" & set "name[91]=GIMP"
set "id[92]=Inkscape.Inkscape" & set "name[92]=Inkscape"
set "id[93]=Krita.Krita" & set "name[93]=Krita"
set "id[94]=BlenderFoundation.Blender" & set "name[94]=Blender"
set "id[95]=HandBrake.HandBrake" & set "name[95]=HandBrake"
:: Analisis & Avanzados
set "id[96]=Microsoft.Sysinternals" & set "name[96]=Sysinternals Suite"
set "id[97]=Microsoft.WindowsTerminal" & set "name[97]=Windows Terminal"
set "id[98]=ShareX.ShareX" & set "name[98]=ShareX"
set "id[99]=CPUID.CPU-Z" & set "name[99]=CPU-Z"
set "id[100]=WiresharkFoundation.Wireshark" & set "name[100]=Wireshark"
:: Gestores de Descargas
set "id[101]=FreeDownloadManager.FDM" & set "name[101]=Free Download Manager"
set "id[102]=qBittorrent.qBittorrent" & set "name[102]=qBittorrent"
set "id[103]=InternetDownloadManager.IDM" & set "name[103]=Internet Download Mgr"
set "id[104]=Motrix.Motrix" & set "name[104]=Motrix"
set "id[105]=JDownloader.JDownloader" & set "name[105]=JDownloader"
:: ========================================================================
:MENU
cls
echo ===================================================
echo PUNTOBAT V1.0 - WINDOWS 11
echo Creado por Mario HM Santiago Chile 15-03-2026
echo ===================================================
echo 1. Limpieza Profunda de Temporales y Basura
echo 2. Reparar Sistema (SFC)
echo 3. Quitar Bing del Buscador
echo 4. Desactivar Windows Copilot
echo 5. Quitar Publicidad y Bloatware (Xbox/Sugerencias)
echo 6. Info del Equipo (SN/Modelo/User/Dominio)
echo 7. Restablecer Red (Winsock/IP/DNS)
echo 8. Menu Clic Derecho Clasico
echo 9. Crear Usuario (Admin o Estandar)
echo 10. Eliminar Usuario
echo 11. Cambiar Clave Administrador
echo 12. Unir a Dominio (Active Directory)
echo 13. Reporte de Bateria
echo 14. Actualizar Windows 11 (Motor PowerShell)
echo 15. Actualizar Todos los Programas (Winget)
echo 16. Todo Automatico (1,2,5,14,15)
echo 17. Ver Salud del Disco y SMART
echo 18. Reparacion Profunda de Imagen (DISM)
echo 19. Activar Modo Alto Rendimiento
echo 20. Reiniciar Cola de Impresion
echo 21. Panel de Impresoras Clasico
echo 22. Gestionar Programas de Inicio
echo 23. Ver Registros del Sistema (Logs / Eventos)
echo 24. Editar Archivo Hosts
echo 25. Mega-Instalador Winget (105 Apps + Buscador)
echo 26. Desinstalador de Programas (Dinamico)
echo 27. Menu Avanzado de Redes (VLSM / Ping / Escaner)
echo 28. Respaldo y Discos (Copias / ISO / Clonacion)
echo 29. Salir
echo ===================================================
set /p "opcion=Seleccione numero (1-29): "
if "%opcion%"=="1" goto LIMPIAR
if "%opcion%"=="2" goto REPARAR
if "%opcion%"=="3" goto BING
if "%opcion%"=="4" goto COPILOT
if "%opcion%"=="5" goto BLOATWARE
if "%opcion%"=="6" goto INFO
if "%opcion%"=="7" goto RED
if "%opcion%"=="8" goto CONTEXTO
if "%opcion%"=="9" goto ADD_U
if "%opcion%"=="10" goto DEL_U
if "%opcion%"=="11" goto PASS_ADMIN
if "%opcion%"=="12" goto DOMAIN_JOIN
if "%opcion%"=="13" goto BATERIA
if "%opcion%"=="14" goto WUPDATE
if "%opcion%"=="15" goto PROGRAMAS
if "%opcion%"=="16" goto TODO
if "%opcion%"=="17" goto DISCO
if "%opcion%"=="18" goto DISM
if "%opcion%"=="19" goto POWER
if "%opcion%"=="20" goto SPOOLER
if "%opcion%"=="21" goto IMPRESORAS
if "%opcion%"=="22" goto STARTUP
if "%opcion%"=="23" goto LOGS
if "%opcion%"=="24" goto HOSTS
if "%opcion%"=="25" goto INSTALL_MENU
if "%opcion%"=="26" goto UNINSTALL_MENU
if "%opcion%"=="27" goto NET_MENU
if "%opcion%"=="28" goto CLON_MENU
if "%opcion%"=="29" exit
goto MENU
:LIMPIAR
echo [INFO] Vaciando archivos temporales, carpetas huerfanas, DNS, Prefetch y Papelera...
:: 1. Borrar todos los archivos sueltos
del /q /f /s "%TEMP%\*" >nul 2>&1
del /q /f /s "C:\Windows\Temp\*" >nul 2>&1
del /q /f /s "C:\Windows\Prefetch\*" >nul 2>&1
:: 2. Borrar todas las carpetas enteras dentro de los temporales
for /d %%x in ("%TEMP%\*") do rd /s /q "%%x" >nul 2>&1
for /d %%x in ("C:\Windows\Temp\*") do rd /s /q "%%x" >nul 2>&1
for /d %%x in ("C:\Windows\Prefetch\*") do rd /s /q "%%x" >nul 2>&1
:: 3. Vaciar papelera y cache DNS
powershell -NoProfile -Command "Clear-RecycleBin -Force -ErrorAction SilentlyContinue" >nul 2>&1
ipconfig /flushdns >nul 2>&1
echo [OK] Limpieza profunda finalizada exitosamente.
echo (Nota: Algunos .tmp pueden quedar si estan en uso por Windows actualmente).
if "%1"=="AUTO" exit /b
pause
goto MENU
:REPARAR
sfc /scannow
if "%1"=="AUTO" exit /b
pause
goto MENU
:BING
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Search" /v "BingSearchEnabled" /t REG_DWORD /d 0 /f >nul 2>&1
if "%1"=="AUTO" exit /b
echo [OK] Bing desactivado del buscador.
pause
goto MENU
:COPILOT
reg add "HKCU\Software\Policies\Microsoft\Windows\WindowsCopilot" /v "TurnOffWindowsCopilot" /t REG_DWORD /d 1 /f >nul 2>&1
if "%1"=="AUTO" exit /b
echo [OK] Copilot desactivado.
pause
goto MENU
:BLOATWARE
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKCU\Software\Microsoft\GameDVR" /v "AppCaptureEnabled" /t REG_DWORD /d 0 /f >nul 2>&1
if "%1"=="AUTO" exit /b
pause
goto MENU
:INFO
cls
echo ===================================================
echo INFORMACION DEL EQUIPO
echo ===================================================
echo NOMBRE DE HOST: %COMPUTERNAME%
for /f "tokens=*" %%a in ('powershell -Command "$d = (Get-CimInstance Win32_ComputerSystem).Domain; if ($d -eq 'WORKGROUP') { 'WORKGROUP (Sin Dominio)' } else { $d }"') do set "dominio=%%a"
echo DOMINIO/GRUPO: %dominio%
echo USUARIO ACTUAL: %USERNAME%
for /f "tokens=*" %%a in ('powershell -Command "$email = (Get-ItemProperty -Path 'HKCU:\Software\Microsoft\IdentityCRL\UserExtendedProperties\*' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Email -First 1); if (!$email) { $email = (Get-CimInstance -Namespace root\cimv2\mdm\dmmap -ClassName MDM_EnterpriseModernAppManagement_AppManagement01 -ErrorAction SilentlyContinue | Select-Object -ExpandProperty EnrollmentUser -First 1) }; if ($email) { $email } else { 'No detectado' }"') do set "usermail=%%a"
echo CORREO: %usermail%
for /f "tokens=*" %%a in ('powershell -Command "(Get-CimInstance Win32_ComputerSystem).Manufacturer"') do set "marca=%%a"
echo MARCA: %marca%
for /f "tokens=*" %%a in ('powershell -Command "$m = Get-CimInstance Win32_ComputerSystemProduct; if ($m.Version -and $m.Version -ne 'None' -and $m.Version -ne 'Default string') { $m.Version } else { $m.Name }"') do set "modelo=%%a"
echo MODELO: %modelo%
for /f "tokens=*" %%a in ('powershell -Command "(Get-CimInstance Win32_BIOS).SerialNumber"') do set "serie=%%a"
echo SERIE: %serie%
echo ===================================================
pause
goto MENU
:RED
ipconfig /release >nul 2>&1
ipconfig /renew >nul 2>&1
ipconfig /flushdns >nul 2>&1
netsh winsock reset >nul 2>&1
netsh int ip reset >nul 2>&1
echo [OK] Servicios de red restablecidos.
if "%1"=="AUTO" exit /b
pause
goto MENU
:CONTEXTO
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve >nul 2>&1
taskkill /f /im explorer.exe >nul 2>&1 & start explorer.exe
pause
goto MENU
:ADD_U
cls
echo ===================================================
echo CREAR NUEVO USUARIO
echo ===================================================
set /p "un=Nombre de usuario: "
set /p "up=Clave: "
net user "%un%" "%up%" /add >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] Hubo un problema al crear el usuario. Revisa que no exista ya o prueba otra clave.
pause
goto MENU
)
echo.
echo [OK] Usuario creado exitosamente.
set /p "tipo=¿Hacer Administrador a %un%? (S/N): "
if /i "%tipo%"=="S" (
net localgroup administradores "%un%" /add >nul 2>&1
net localgroup administrators "%un%" /add >nul 2>&1
echo [OK] %un% ahora es Administrador.
) else (
echo [OK] %un% se dejo configurado como Usuario Estandar.
)
pause
goto MENU
:DEL_U
cls
net user
echo.
set /p "ud=Escribe el nombre del usuario a borrar: "
net user "%ud%" /delete
pause
goto MENU
:PASS_ADMIN
cls
echo ===================================================
echo CAMBIAR CLAVE DE ADMINISTRADOR LOCAL
echo ===================================================
set /p "newpass=Ingrese la nueva clave para 'administrador': "
net user administrador "%newpass%" >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] No se pudo cambiar la clave. Verifica las politicas de Windows.
) else (
echo [OK] Clave de administrador actualizada exitosamente.
)
pause
goto MENU
:DOMAIN_JOIN
cls
echo ===================================================
echo UNIR EQUIPO A DOMINIO (AD)
echo ===================================================
set /p "dominio=Ingrese el nombre del dominio (ej: empresa.local): "
if "%dominio%"=="" goto MENU
echo.
echo [INFO] Se abrira una ventana de seguridad de Windows.
echo [INFO] Ingrese un usuario de red con permisos para unir equipos.
echo.
powershell -Command "Add-Computer -DomainName '%dominio%' -Credential (Get-Credential) -ErrorAction Stop"
if %errorlevel% equ 0 (
echo.
echo [OK] El equipo se unio a %dominio% exitosamente.
set /p "reinicio=¿Desea reiniciar el equipo ahora? (S/N): "
if /i "!reinicio!"=="S" shutdown /r /t 5
) else (
echo.
echo [ERROR] Hubo un problema al unir el equipo al dominio.
)
pause
goto MENU
:BATERIA
powercfg /batteryreport /output "%USERPROFILE%\Desktop\Bateria.html" >nul 2>&1
echo [OK] Reporte generado en el Escritorio.
start "" "%USERPROFILE%\Desktop\Bateria.html"
pause
goto MENU
:WUPDATE
echo [INFO] Iniciando motor nativo de Windows Update en consola...
set "wu_script=%temp%\wu_update_%random%.ps1"
> "!wu_script!" echo $UpdateSession = New-Object -ComObject Microsoft.Update.Session
>> "!wu_script!" echo $UpdateSession.ClientApplicationID = 'PuntoBat'
>> "!wu_script!" echo $UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
>> "!wu_script!" echo Write-Host "[INFO] Buscando actualizaciones en los servidores... (Esto puede tardar)" -ForegroundColor Cyan
>> "!wu_script!" echo try {
>> "!wu_script!" echo $SearchResult = $UpdateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")
>> "!wu_script!" echo if ($SearchResult.Updates.Count -eq 0) {
>> "!wu_script!" echo Write-Host "[OK] El sistema ya esta completamente actualizado." -ForegroundColor Green
>> "!wu_script!" echo } else {
>> "!wu_script!" echo Write-Host ("[!] Se encontraron " + $SearchResult.Updates.Count + " actualizaciones:") -ForegroundColor Yellow
>> "!wu_script!" echo $UpdatesToDownload = New-Object -ComObject Microsoft.Update.UpdateColl
>> "!wu_script!" echo foreach ($Update in $SearchResult.Updates) {
>> "!wu_script!" echo Write-Host (" - " + $Update.Title) -ForegroundColor White
>> "!wu_script!" echo $UpdatesToDownload.Add($Update) ^| Out-Null
>> "!wu_script!" echo }
>> "!wu_script!" echo Write-Host "[INFO] Descargando actualizaciones..." -ForegroundColor Cyan
>> "!wu_script!" echo $Downloader = $UpdateSession.CreateUpdateDownloader()
>> "!wu_script!" echo $Downloader.Updates = $UpdatesToDownload
>> "!wu_script!" echo $Downloader.Download() ^| Out-Null
>> "!wu_script!" echo Write-Host "[INFO] Instalando actualizaciones..." -ForegroundColor Cyan
>> "!wu_script!" echo $Installer = $UpdateSession.CreateUpdateInstaller()
>> "!wu_script!" echo $Installer.Updates = $UpdatesToDownload
>> "!wu_script!" echo $InstallResult = $Installer.Install()
>> "!wu_script!" echo Write-Host "[OK] Instalacion completada. (Algunas actualizaciones pueden requerir reinicio)" -ForegroundColor Green
>> "!wu_script!" echo }
>> "!wu_script!" echo } catch {
>> "!wu_script!" echo Write-Host "[ERROR] Acceso Denegado: Tu servidor corporativo (WSUS) bloquea la API local." -ForegroundColor Red
>> "!wu_script!" echo Write-Host "[INFO] Usa la interfaz grafica de Windows para actualizar este equipo en particular." -ForegroundColor Yellow
>> "!wu_script!" echo }
powershell -NoProfile -ExecutionPolicy Bypass -File "!wu_script!"
del /q /f "!wu_script!" >nul 2>&1
if "%1"=="AUTO" exit /b
pause
goto MENU
:PROGRAMAS
echo [INFO] Sincronizando catalogo de Winget (Solucionando error 0x8a15000f)...
winget source update >nul 2>&1
winget upgrade --all --include-unknown --accept-package-agreements --accept-source-agreements --disable-interactivity
if "%1"=="AUTO" exit /b
pause
goto MENU
:TODO
cls & echo [PROCESO AUTOMATICO INICIADO]
call :LIMPIAR AUTO & call :REPARAR AUTO & call :BLOATWARE AUTO & call :WUPDATE AUTO & call :PROGRAMAS AUTO
echo [OK] TAREAS COMPLETADAS.
pause
goto MENU
:DISCO
echo [INFO] Analizando el estado de los discos fisicos instalados...
powershell -NoProfile -Command "Get-PhysicalDisk | Format-Table -AutoSize Model, MediaType, HealthStatus, Size"
pause
goto MENU
:DISM
dism /online /cleanup-image /restorehealth
pause
goto MENU
:POWER
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 >nul 2>&1
powercfg /setactive e9a42b02-d5df-448d-aa00-03f14749eb61 >nul 2>&1
echo [OK] Plan de energia "Alto Rendimiento" activado.
pause
goto MENU
:SPOOLER
net stop spooler >nul 2>&1 & del /Q /F /S "%systemroot%\System32\Spool\Printers\*.*" >nul 2>&1 & net start spooler >nul 2>&1
echo [OK] Cola de impresion reiniciada y limpia.
pause
goto MENU
:IMPRESORAS
echo [INFO] Abriendo el Panel de Dispositivos e Impresoras Clasico...
explorer shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}
pause
goto MENU
:STARTUP
echo [INFO] Abriendo la configuracion de aplicaciones de inicio de Windows 11...
start ms-settings:startupapps
pause
goto MENU
:LOGS
echo [INFO] Abriendo el Visor de Eventos de Windows...
start eventvwr.msc
pause
goto MENU
:HOSTS
echo [INFO] Abriendo el archivo Hosts en el Bloc de notas con permisos de Administrador...
echo Asegurate de guardar los cambios (Ctrl + G) antes de cerrar el Bloc de notas.
start /wait notepad "C:\Windows\System32\drivers\etc\hosts"
echo [OK] Archivo cerrado.
pause
goto MENU
:: ------------------------------------------------------------------------
:: MENU DE INSTALACION 105 APPS Y BUSCADOR
:: ------------------------------------------------------------------------
:INSTALL_MENU
cls
echo ===============================================================================
echo MEGA-INSTALADOR CORPORATIVO (105 PROGRAMAS)
echo ===============================================================================
echo [NAVEGADORES/COMMS] [SISTEMA/UTILIDADES] [DESARROLLO/BD]
echo 1. Google Chrome 36. 7-Zip 66. VS Code
echo 2. Mozilla Firefox 37. WinRAR 67. Notepad++
echo 3. Brave Browser 38. PeaZip 69. IntelliJ IDEA
echo 4. Opera Browser 39. Rufus 70. PyCharm
echo 5. Microsoft Edge 40. BalenaEtcher 71. DBeaver
echo 6. WhatsApp 41. Everything 72. SQL Server SSMS
echo 7. Slack 42. PowerToys 73. MySQL Workbench
echo 8. Microsoft Teams 43. TreeSize Free 74. Postman
echo 9. Zoom 44. WinDirStat 75. Insomnia REST
echo 10. Discord 45. Caffeine [HERRAMIENTAS IT]
echo 11. Telegram [REDES/REMOTO] 76. Python 3.12
echo 12. Webex 46. PuTTY 77. Git
echo 13. Skype 47. WinSCP 78. GitHub Desktop
echo 14. Signal 48. FileZilla 79. Node.js
echo 15. Viber 49. AnyDesk 80. Java 8 JRE
echo [OFICINA/PDF] 50. TeamViewer 81. Docker Desktop
echo 16. Microsoft Office 51. RustDesk 82. VirtualBox
echo 17. LibreOffice 52. VNC Viewer 83. VMware Player
echo 18. Adobe Reader 53. MobaXterm 84. Citrix Workspace
echo 19. Foxit Reader 54. Termius 85. Power BI Desktop
echo 20. OnlyOffice 55. Bitvise SSH [MULTIMEDIA/DISENO]
echo 21. Obsidian [SEGURIDAD/VPN] 86. VLC Player
echo 22. Notion 56. FortiClient VPN 87. OBS Studio
echo 23. Evernote 57. Cisco Secure Client 88. Spotify
echo 24. PDF24 Creator 58. OpenVPN Connect 89. iTunes
echo 25. Sumatra PDF 59. WireGuard VPN 90. Audacity
echo [NUBE/DRIVE] 60. Malwarebytes 91. GIMP
echo 26. Google Drive 61. Kaspersky Free 92. Inkscape
echo 27. Dropbox 62. Bitdefender 93. Krita
echo 28. OneDrive 63. Avast Free 94. Blender
echo 29. Terabox 64. AVG Antivirus 95. HandBrake
echo 30. MEGASync 65. KeePassXC [ANALISIS/AVANZADO]
echo 31. Nextcloud [DESCARGAS / P2P] 96. Sysinternals
echo 32. iCloud 101. Free Download Mgr 97. Windows Terminal
echo 33. Box Drive 102. qBittorrent 98. ShareX
echo 34. Tresorit 103. IDM 99. CPU-Z
echo 35. pCloud 104. Motrix 100. Wireshark
echo 105. JDownloader
echo ===============================================================================
echo [B] BUSCAR PROGRAMA POR NOMBRE [0] VOLVER AL MENU PRINCIPAL
echo ===============================================================================
set "soft="
set /p "soft=Escribe numeros (ej: 1 49 102), 'B' para buscar o '0' para salir: "
if /i "%soft%"=="0" goto MENU
if /i "%soft%"=="B" goto BUSCADOR
if not "%soft%"=="" (
echo.
echo [INFO] Sincronizando catalogo de Winget para evitar errores de descarga...
winget source update >nul 2>&1
for %%i in (%soft%) do (
call :PROCESAR_INSTALACION %%i
)
echo.
echo [OK] PROCESO FINALIZADO.
pause
goto INSTALL_MENU
)
goto INSTALL_MENU
:: ------------------------------------------------------------------------
:: MOTOR DE BÚSQUEDA
:: ------------------------------------------------------------------------
:BUSCADOR
cls
echo ===================================================
echo BUSCADOR DE PROGRAMAS
echo ===================================================
set /p "termino=Escribe el nombre del programa (ej: zip, sql, pdf): "
echo.
echo Resultados para "%termino%":
echo ---------------------------------------------------
set "encontrado=0"
for /L %%i in (1,1,105) do (
echo !name[%%i]! | find /i "%termino%" >nul
if !errorlevel! equ 0 (
echo [%%i] !name[%%i]!
set "encontrado=1"
)
)
if "!encontrado!"=="0" echo No se encontraron resultados.
echo ---------------------------------------------------
pause
goto INSTALL_MENU
:: ------------------------------------------------------------------------
:: MOTOR DINAMICO DE INSTALACION
:: ------------------------------------------------------------------------
:PROCESAR_INSTALACION
set "prog_id=!id[%1]!"
set "prog_name=!name[%1]!"
if not "!prog_id!"=="" (
echo [PROCESANDO] Instalando %1: !prog_name!...
winget install --id !prog_id! --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
) else (
echo [!] Numero %1 no valido, saltando...
)
exit /b
:: ------------------------------------------------------------------------
:: MODULO DE DESINSTALACION DINAMICA
:: ------------------------------------------------------------------------
:UNINSTALL_MENU
cls
echo ===================================================
echo MODULO DE DESINSTALACION DINAMICA
echo ===================================================
echo Escaneando el sistema en busca de software...
echo (Esto tomara unos segundos, por favor espere)
echo.
set "ps_uninst=%temp%\uninst_%random%.ps1"
> "!ps_uninst!" echo $apps = Get-ItemProperty @('HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*') -ErrorAction SilentlyContinue ^| Where-Object { $_.DisplayName -and $_.SystemComponent -ne 1 -and $_.ParentKeyName -eq $null } ^| Select-Object DisplayName ^| Sort-Object DisplayName -Unique
>> "!ps_uninst!" echo $i = 1
>> "!ps_uninst!" echo foreach ($app in $apps) { Write-Host ("[{0,3}] {1}" -f $i, $app.DisplayName); $i++ }
>> "!ps_uninst!" echo Write-Host ""
>> "!ps_uninst!" echo $sel = Read-Host "Selecciona programa(s) a desinstalar separados por un espacio (ej: 1 5 12) o 0 para cancelar"
>> "!ps_uninst!" echo if ($sel -eq '0' -or [string]::IsNullOrWhiteSpace($sel)) { exit }
>> "!ps_uninst!" echo $nums = $sel -split '\s+'
>> "!ps_uninst!" echo foreach ($n in $nums) {
>> "!ps_uninst!" echo if ($n -match '^\d+$') {
>> "!ps_uninst!" echo $idx = [int]$n - 1
>> "!ps_uninst!" echo if ($idx -ge 0 -and $idx -lt $apps.Count) {
>> "!ps_uninst!" echo $name = $apps[$idx].DisplayName.Trim()
>> "!ps_uninst!" echo Write-Host ("`n[DESINSTALANDO] " + $name + "...") -ForegroundColor Yellow
>> "!ps_uninst!" echo winget uninstall --name "$name" --silent --accept-source-agreements --disable-interactivity
>> "!ps_uninst!" echo }
>> "!ps_uninst!" echo }
>> "!ps_uninst!" echo }
powershell -NoProfile -ExecutionPolicy Bypass -File "!ps_uninst!"
del /q /f "!ps_uninst!" >nul 2>&1
echo.
echo [OK] Proceso de desinstalacion finalizado.
pause
goto MENU
:: ------------------------------------------------------------------------
:: MENU AVANZADO DE REDES (VLSM / PING / ESCANER / UTILIDADES)
:: ------------------------------------------------------------------------
:NET_MENU
cls
echo ===============================================================================
echo MENU AVANZADO DE REDES (NETWORKING)
echo ===============================================================================
echo 1. Calculadora IP / Subneteo (VLSM / CIDR)
echo 2. Escaner de Puertos TCP (Local o Remoto)
echo 3. Ver Tabla de Enrutamiento (route print)
echo 4. Ver Configuracion IP Detallada (ipconfig /all)
echo 5. Ping Extendido con Marca de Tiempo
echo 6. Trazar Ruta a un Servidor (tracert)
echo 7. Obtener IP Publica Actual
echo 8. Ver Contrasenas Wi-Fi Guardadas
echo 9. Consulta DNS (nslookup)
echo 10. Ver Dispositivos en la Red Local (Tabla ARP)
echo 11. Ver Conexiones Activas (netstat)
echo 0. Volver al Menu Principal
echo ===============================================================================
set "netop="
set /p "netop=Seleccione numero (0-11): "
if "%netop%"=="1" goto NET_CALC
if "%netop%"=="2" goto NET_SCAN
if "%netop%"=="3" goto NET_ROUTE
if "%netop%"=="4" goto NET_IP
if "%netop%"=="5" goto NET_PING
if "%netop%"=="6" goto NET_TRACE
if "%netop%"=="7" goto NET_PUB
if "%netop%"=="8" goto NET_WIFI
if "%netop%"=="9" goto NET_DNS
if "%netop%"=="10" goto NET_ARP
if "%netop%"=="11" goto NET_NETSTAT
if "%netop%"=="0" goto MENU
goto NET_MENU
:NET_CALC
cls
echo ===================================================
echo CALCULADORA IP / SUBNETEO
echo ===================================================
set "ps_calc=%temp%\vlsm_%random%.ps1"
> "!ps_calc!" echo $host.UI.RawUI.WindowTitle = 'Calculadora VLSM'
>> "!ps_calc!" echo $input = Read-Host "Ingresa IP y Prefijo (Ejemplo: 192.168.10.5/26)"
>> "!ps_calc!" echo if ($input -match '^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/(\d{1,2})$') {
>> "!ps_calc!" echo $ipStr = $matches[1]; $cidr = [int]$matches[2]
>> "!ps_calc!" echo if ($cidr -gt 32 -or $cidr -lt 0) { Write-Host "Prefijo invalido." -Fore Red; exit }
>> "!ps_calc!" echo $ip = [System.Net.IPAddress]::Parse($ipStr).GetAddressBytes()
>> "!ps_calc!" echo [Array]::Reverse($ip)
>> "!ps_calc!" echo $ipNum = [BitConverter]::ToUInt32($ip, 0)
>> "!ps_calc!" echo $binStr = ('1' * $cidr) + ('0' * (32 - $cidr))
>> "!ps_calc!" echo $maskNum = [Convert]::ToUInt32($binStr, 2)
>> "!ps_calc!" echo $netNum = $ipNum -band $maskNum
>> "!ps_calc!" echo $wildcard = [uint32]4294967295 - $maskNum
>> "!ps_calc!" echo $bcastNum = $netNum -bor $wildcard
>> "!ps_calc!" echo $maskBytes = [BitConverter]::GetBytes($maskNum); [Array]::Reverse($maskBytes); $maskStr = ($maskBytes -join '.')
>> "!ps_calc!" echo $netBytes = [BitConverter]::GetBytes($netNum); [Array]::Reverse($netBytes); $netStr = ($netBytes -join '.')
>> "!ps_calc!" echo $bcastBytes = [BitConverter]::GetBytes($bcastNum); [Array]::Reverse($bcastBytes); $bcastStr = ($bcastBytes -join '.')
>> "!ps_calc!" echo $hosts = if ($cidr -eq 32) {1} elseif ($cidr -eq 31) {2} else { [Math]::Pow(2, 32 - $cidr) - 2 }
>> "!ps_calc!" echo Write-Host ""
>> "!ps_calc!" echo Write-Host "[+] DIRECCION IP: $ipStr" -ForegroundColor Cyan
>> "!ps_calc!" echo Write-Host "[+] MASCARA: $maskStr" -ForegroundColor Cyan
>> "!ps_calc!" echo Write-Host "[+] RED (NETWORK): $netStr" -ForegroundColor Green
>> "!ps_calc!" echo Write-Host "[+] BROADCAST: $bcastStr" -ForegroundColor Yellow
>> "!ps_calc!" echo Write-Host "[+] HOSTS UTILES: $hosts" -ForegroundColor Magenta
>> "!ps_calc!" echo } else { Write-Host "Formato invalido." -ForegroundColor Red }
powershell -NoProfile -ExecutionPolicy Bypass -File "!ps_calc!"
del /q /f "!ps_calc!" >nul 2>&1
echo.
pause
goto NET_MENU
:NET_SCAN
echo ===================================================
set /p "ipscan=Ingresa la IP o Dominio a escanear: "
set /p "portscan=Ingresa el puerto (ej: 80, 443, 3389): "
powershell -Command "Write-Host 'Escaneando puerto en %ipscan%...' -Fore Cyan; $t = Test-NetConnection -ComputerName '%ipscan%' -Port '%portscan%' -InformationLevel Quiet; if($t){Write-Host '[ABIERTO] El puerto %portscan% esta respondiendo.' -Fore Green}else{Write-Host '[CERRADO] El puerto no responde o esta bloqueado por Firewall.' -Fore Red}"
pause
goto NET_MENU
:NET_ROUTE
route print
pause
goto NET_MENU
:NET_IP
ipconfig /all
pause
goto NET_MENU
:NET_PING
echo [INFO] Presiona Ctrl + C para detener el Ping.
set /p "ipping=Ingresa la IP o Dominio para Ping: "
ping %ipping% -t | powershell -Command "ForEach-Object { '{0} - {1}' -f (Get-Date -f 'yyyy-MM-dd HH:mm:ss'), $_ }"
pause
goto NET_MENU
:NET_TRACE
set /p "iptrace=Ingresa la IP o Dominio a trazar: "
tracert %iptrace%
pause
goto NET_MENU
:NET_PUB
echo [INFO] Consultando servidor externo para obtener IP Publica...
curl -s ifconfig.me
echo.
echo.
pause
goto NET_MENU
:NET_WIFI
echo [INFO] Redes Wi-Fi guardadas en este equipo:
netsh wlan show profiles | findstr "Perfil"
echo.
set /p "wifiname=Escribe el nombre exacto de la red para ver su clave: "
echo.
netsh wlan show profile name="%wifiname%" key=clear | findstr /R /C:"Contenido de la clave" /C:"Key Content"
if %errorlevel% neq 0 echo [!] No se encontro la clave o el nombre es incorrecto.
pause
goto NET_MENU
:NET_DNS
set /p "dnsdomain=Ingresa el dominio a consultar (ej: google.com): "
nslookup %dnsdomain%
pause
goto NET_MENU
:NET_ARP
echo [INFO] Mostrando tabla ARP (Dispositivos descubiertos en la red local)...
arp -a
pause
goto NET_MENU
:NET_NETSTAT
echo [INFO] Mostrando conexiones de red activas (ESTABLISHED)...
netstat -ano | findstr ESTABLISHED
pause
goto NET_MENU
:: ------------------------------------------------------------------------
:: MENU DE RESPALDO Y DISCOS (CLONACION / ISO / USB)
:: ------------------------------------------------------------------------
:CLON_MENU
cls
echo ===============================================================================
echo MODULO DE RESPALDO Y MEDIOS (CLONACION / ISO)
echo ===============================================================================
echo [ADVERTENCIA] La clonacion a bajo nivel requiere herramientas de terceros.
echo Windows no posee un comando nativo seguro para clonar discos bit a bit sin
echo riesgo critico de perdida de datos.
echo.
echo 1. Hacer Copia de Seguridad de un Pendrive USB al Escritorio (Seguro)
echo 2. Instalar Macrium Reflect Free (Software Profesional para Clonar Discos)
echo 3. Instalar AnyBurn (Software Ligero para Crear y Grabar ISOs)
echo 4. Abrir Rufus (Crear USB Booteable) - *Requiere instalacion previa (Menu 25)*
echo 0. Volver al Menu Principal
echo ===============================================================================
set "clonop="
set /p "clonop=Seleccione numero (0-4): "
if "%clonop%"=="1" goto USB_BACKUP
if "%clonop%"=="2" goto INSTALL_MACRIUM
if "%clonop%"=="3" goto INSTALL_ANYBURN
if "%clonop%"=="4" goto OPEN_RUFUS
if "%clonop%"=="0" goto MENU
goto CLON_MENU
:USB_BACKUP
cls
echo ===================================================
echo COPIA DE SEGURIDAD DE UNIDAD USB
echo ===================================================
wmic logicaldisk get caption,volumename,drivetype | findstr "2"
echo.
set /p "usb_drive=Ingresa la LETRA de tu pendrive (Ejemplo: E): "
if "%usb_drive%"=="" goto CLON_MENU
set "dest_folder=%USERPROFILE%\Desktop\Respaldo_USB_%usb_drive%"
echo [INFO] Copiando archivos de %usb_drive%:\ hacia %dest_folder%...
robocopy "%usb_drive%:\" "%dest_folder%" /E /Z /R:3 /W:1 /MT:8
echo.
echo [OK] Copia finalizada. Revisa la carpeta en tu Escritorio.
pause
goto CLON_MENU
:INSTALL_MACRIUM
echo [INFO] Instalando Macrium Reflect (Herramienta de Clonacion Profesional)...
winget install --id ParamountSoftware.MacriumReflect --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
pause
goto CLON_MENU
:INSTALL_ANYBURN
echo [INFO] Instalando AnyBurn (Herramienta para crear y editar ISOs)...
winget install --id AnyBurn.AnyBurn --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
pause
goto CLON_MENU
:OPEN_RUFUS
echo [INFO] Abriendo Rufus...
start rufus.exe >nul 2>&1
if %errorlevel% neq 0 echo [!] Rufus no esta instalado. Ve al Menu 25 (Opcion 39) para instalarlo.
pause
goto CLON_MENU
Comentarios
Publicar un comentario