PuntoBat v2.0

 

🚀 LANZAMIENTO OFICIAL: PuntoBat V2.0 - El ecosistema definitivo para el soporte IT (Ahora con Modo Offline)

Si trabajas en soporte técnico corporativo, sabes que la teoría es muy distinta a la práctica. Te enfrentas a equipos bloqueados por políticas de Active Directory (GPO), firewalls estrictos y agentes de seguridad perimetral (CASB como Netskope) que interceptan y rompen tus descargas de mantenimiento.

Para solucionar esto, he diseñado PuntoBat V2.0, que deja de ser un simple script para convertirse en un ecosistema de dos herramientas que trabajan en conjunto para evadir los bloqueos de red y estandarizar tu parque informático en tiempo récord.


⚠️ ADVERTENCIA DE SEGURIDAD Y DESCARGA OFICIAL

Al ser archivos de texto plano (.bat), el código es 100% transparente para que puedas auditarlo, pero también es fácil de manipular por terceros. Por la seguridad de tu infraestructura, descarga PuntoBat ÚNICAMENTE desde este blog oficial: 👉 [ https://batpunto.blogspot.com/ ]

No nos hacemos responsables por infecciones, pérdida de datos o modificaciones maliciosas provenientes de archivos descargados en foros, pendrives de terceros o repositorios no oficiales.

🏢 AVISO SOBRE POLÍTICAS CORPORATIVAS (GPO / EDR)

PuntoBat realiza cambios profundos a nivel de sistema (sfc, dism, gestión de usuarios, red). Ten en cuenta que algunas opciones podrían ser bloqueadas por las políticas de tu empresa. Si el instalador online (Opción 14) o la creación de usuarios falla, es altamente probable que tu entorno tenga restricciones de Active Directory, o bloqueos de tu Antivirus/EDR. Úsalo siempre respetando los lineamientos de ciberseguridad de tu organización.


🛠️ La gran novedad: ¿Cómo funciona el Ecosistema Offline?

Para ganarle a los bloqueos de red corporativos (que impiden actualizar Windows), PuntoBat ahora se divide en dos fases: el Downloader (para tu casa) y la V2.0 (para la oficina).

Paso 1: La Preparación en Casa (PuntoBat Downloader) Antes de salir a terreno, conectas tu pendrive en tu PC personal (sin restricciones) y ejecutas PuntoBat_Downloader.bat.

  • Este asistente te preguntará la letra de tu pendrive y creará automáticamente la carpeta Parches_Offline.

  • Luego, te abrirá directamente el Catálogo Oficial de Microsoft en tu navegador.

  • Descargas la Actualización Acumulativa x64 del mes (y el SSU si lo requiere) directo a esa carpeta. (Nota: Ignora los parches que digan "arm64" a menos que tengas equipos con procesadores Snapdragon).

Paso 2: En la Trinchera (PuntoBat V2.0) Llegas a la oficina, conectas el pendrive al notebook "bloqueado" por la empresa y ejecutas PuntoBat V2.0.bat como Administrador.

  • Vas a la nueva Opción 15 (Actualizar Windows 11 Offline).

  • El script leerá la carpeta de tu pendrive e inyectará los parches localmente de forma silenciosa. Cero uso de internet, cero bloqueos de Netskope.


⚙️ ¿Qué incluye PuntoBat V2.0? (Guía de Menús)

Nuestra V2.0 centraliza 30 herramientas críticas. Solo teclea un número y presiona Enter.

1. Módulo Core: Sistema, Mantenimiento y Cuentas (Opciones 1 - 25)

El arsenal del día a día para limpiar y configurar:

  • Mantenimiento Profundo: Limpieza de Temporales, DNS, Prefetch, Papelera y reparación de imagen (sfc /scannow y DISM).

  • Optimización (Anti-Bloatware): Desactiva Copilot, quita Bing del buscador de Windows y elimina sugerencias/publicidad.

  • Gestión IT: Crea/elimina usuarios, cambia la clave del admin local en segundos y une el equipo al dominio (AD).

  • Actualizaciones a Medida: Tienes la Opción 14 (Motor PowerShell que baja parches desde la API de Microsoft) y la Opción 15 (El nuevo Modo USB Local).

  • Fixes Rápidos: Reseteo total de red (Winsock/IP), purga de la cola de impresión, panel de impresoras clásico y recuperación del menú de clic derecho tradicional.

2. El Mega-Instalador y Desinstalador Winget (Opciones 26 y 27)

Un motor desatendido basado en Winget (con parche incluido para errores de sincronización). Incluye un buscador interno y un desinstalador dinámico que lee el registro de Windows.

Catálogo de 105 Programas incluidos:

  • Navegadores & Comms: Chrome, Firefox, Brave, Teams, Zoom, Slack, Webex, WhatsApp, Discord, etc.

  • Oficina & PDF: Office 365, LibreOffice, Adobe Reader, Foxit, PDF24, Notion, Obsidian.

  • Redes & Remoto: AnyDesk, TeamViewer, RustDesk, PuTTY, WinSCP, FileZilla, MobaXterm.

  • Seguridad & Nube: FortiClient, Cisco Secure Client, OpenVPN, Malwarebytes, Google Drive, OneDrive, Nextcloud.

  • Dev & IT Tools: VS Code, Notepad++, DBeaver, Python, Git, Docker, VirtualBox, VMware, Sysinternals Suite, Wireshark.

  • Multimedia: VLC, OBS, Spotify, Audacity, GIMP.

3. Menú Avanzado de Redes (Opción 28)

Herramientas de diagnóstico integradas en la consola:

  • Calculadora VLSM / Subneteo: Ingresa una IP (ej. 192.168.1.0/24) y obtén la Máscara, Red, Broadcast y Hosts útiles.

  • Diagnóstico: Escáner de puertos TCP, Ping extendido con marca de tiempo, Tracert, nslookup y netstat.

  • Utilidades extra: Extractor de contraseñas Wi-Fi guardadas en el equipo (en texto plano) y visor de IP Pública.

4. Módulo de Respaldo y Clonación (Opción 29)

Todo lo necesario para proteger la data antes de un formateo:

  • Backup USB Seguro: Utiliza robocopy multi-hilo para respaldar rápidamente cualquier pendrive a una carpeta en el Escritorio.

  • Instaladores Pro: Accesos directos para instalar Macrium Reflect (para clonación de discos a bajo nivel) y AnyBurn / Rufus (para creación de ISOs y pendrives booteables).


📥 DESCARGA LA VERSIÓN 2.0 (Ecosistema Completo)

Descarga el archivo comprimido que contiene tanto el PuntoBat V2.0 como el PuntoBat Downloader. Guárdalos en tu pendrive de guerra y transforma tu manera de dar soporte.

[Descarga PuntoBat v2.0 ]

(Para evitar falsos positivos al descargar ejecutables, el archivo ZIP tiene contraseña. La contraseña es: puntobat2026)

¿Qué te parece esta nueva actualización? Déjanos en los comentarios cómo te ha funcionado el módulo offline en tu empresa. ¡El soporte lo hacemos entre todos!


Codigo PuntoBat v2.0


@echo off
:: Este sistema fue creado por Mario HM (Santiago de Chile)
chcp 65001 >nul
color 0A
title PUNTOBAT V2.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 V2.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 Windows 11 Offline (Modo USB Local)
echo 16. Actualizar Todos los Programas (Winget)
echo 17. Todo Automatico (1,2,5,14,16)
echo 18. Ver Salud del Disco y SMART
echo 19. Reparacion Profunda de Imagen (DISM)
echo 20. Activar Modo Alto Rendimiento
echo 21. Reiniciar Cola de Impresion
echo 22. Panel de Impresoras Clasico
echo 23. Gestionar Programas de Inicio
echo 24. Ver Registros del Sistema (Logs / Eventos)
echo 25. Editar Archivo Hosts
echo 26. Mega-Instalador Winget (105 Apps + Buscador)
echo 27. Desinstalador de Programas (Dinamico)
echo 28. Menu Avanzado de Redes (VLSM / Ping / Escaner)
echo 29. Respaldo y Discos (Copias / ISO / Clonacion)
echo 30. Salir
echo ===================================================
set /p "opcion=Seleccione numero (1-30): "

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 UPDATE_OFFLINE
if "%opcion%"=="16" goto PROGRAMAS
if "%opcion%"=="17" goto TODO
if "%opcion%"=="18" goto DISCO
if "%opcion%"=="19" goto DISM
if "%opcion%"=="20" goto POWER
if "%opcion%"=="21" goto SPOOLER
if "%opcion%"=="22" goto IMPRESORAS
if "%opcion%"=="23" goto STARTUP
if "%opcion%"=="24" goto LOGS
if "%opcion%"=="25" goto HOSTS
if "%opcion%"=="26" goto INSTALL_MENU
if "%opcion%"=="27" goto UNINSTALL_MENU
if "%opcion%"=="28" goto NET_MENU
if "%opcion%"=="29" goto CLON_MENU
if "%opcion%"=="30" exit
goto MENU

:LIMPIAR
echo [INFO] Vaciando archivos y carpetas temporales, 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 o usa la Opcion 15 (Offline)." -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

:UPDATE_OFFLINE
cls
echo ===================================================
echo        ACTUALIZAR WINDOWS 11 OFFLINE (USB)
echo ===================================================
echo [INFO] Buscando actualizaciones (.msu) en la carpeta Parches_Offline...
set "rutaparches=%~dp0Parches_Offline"

if not exist "!rutaparches!" (
    echo [ERROR] No se encontro la carpeta "Parches_Offline" junto a este script.
    echo Por favor, creala en tu pendrive y coloca ahi los archivos .msu descargados.
    pause
    goto MENU
)

set "encontrado=0"
for %%f in ("!rutaparches!\*.msu") do (
    set "encontrado=1"
    echo [PROCESANDO] Instalando: %%~nxf ...
    echo (Esto puede tardar varios minutos. No cierre la ventana).
    start /wait wusa.exe "%%f" /quiet /norestart
    echo [OK] Instalacion completada para %%~nxf.
)

if "!encontrado!"=="0" (
    echo [!] La carpeta existe, pero no hay archivos .msu dentro.
) else (
    echo.
    echo [EXITO] Todos los parches offline han sido procesados.
    echo [NOTA] Es probable que necesites reiniciar el equipo para aplicar los cambios.
)
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                 68. Sublime Text
echo 4. Opera Browser            39. Rufus                  69. IntelliJ IDEA
echo 5. Microsoft Edge           40. BalenaEtcher           70. PyCharm
echo 6. WhatsApp                 41. Everything             71. DBeaver
echo 7. Slack                    42. PowerToys              72. SQL Server SSMS
echo 8. Microsoft Teams          43. TreeSize Free          73. MySQL Workbench
echo 9. Zoom                     44. WinDirStat             74. Postman
echo 10. Discord                 45. Caffeine               75. Insomnia REST
echo 11. Telegram                [REDES/REMOTO]             [HERRAMIENTAS IT]
echo 12. Webex                   46. PuTTY                  76. Python 3.12
echo 13. Skype                   47. WinSCP                 77. Git
echo 14. Signal                  48. FileZilla              78. GitHub Desktop
echo 15. Viber                   49. AnyDesk                79. Node.js
echo [OFICINA/PDF]               50. TeamViewer             80. Java 8 JRE
echo 16. Microsoft Office        51. RustDesk               81. Docker Desktop
echo 17. LibreOffice             52. VNC Viewer             82. VirtualBox
echo 18. Adobe Reader            53. MobaXterm              83. VMware Player
echo 19. Foxit Reader            54. Termius                84. Citrix Workspace
echo 20. OnlyOffice              55. Bitvise SSH            85. Power BI Desktop
echo 21. Obsidian                [SEGURIDAD/VPN]            [MULTIMEDIA/DISENO]
echo 22. Notion                  56. FortiClient VPN        86. VLC Player
echo 23. Evernote                57. Cisco Secure Client    87. OBS Studio
echo 24. PDF24 Creator           58. OpenVPN Connect        88. Spotify
echo 25. Sumatra PDF             59. WireGuard VPN          89. iTunes
echo [NUBE/DRIVE]                60. Malwarebytes           90. Audacity
echo 26. Google Drive            61. Kaspersky Free         91. GIMP
echo 27. Dropbox                 62. Bitdefender            92. Inkscape
echo 28. OneDrive                63. Avast Free             93. Krita
echo 29. Terabox                 64. AVG Antivirus          94. Blender
echo 30. MEGASync                65. KeePassXC              95. HandBrake
echo 31. Nextcloud               [DESCARGAS / P2P]          [ANALISIS/AVANZADO]
echo 32. iCloud                  101. Free Download Mgr     96. Sysinternals
echo 33. Box Drive               102. qBittorrent           97. Windows Terminal
echo 34. Tresorit                103. IDM                   98. ShareX
echo 35. pCloud                  104. Motrix                99. CPU-Z
echo                             105. JDownloader           100. Wireshark
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 26)*
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 26 (Opcion 39) para instalarlo.
pause
goto CLON_MENU



Codigo PuntoBat Downloader


@echo off
:: PuntoBat Downloader - Herramienta de preparacion Offline
:: Creado por Mario HM (Santiago de Chile)
chcp 65001 >nul
color 0B
title PUNTOBAT DOWNLOADER - ASISTENTE OFFLINE

:: VERIFICAR ADMIN
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo [ERROR] Por favor ejecuta como Administrador para preparar el USB.
    pause
    exit
)

:INICIO
cls
echo ===============================================================================
echo                     PUNTOBAT DOWNLOADER (PREPARACION USB)
echo ===============================================================================
echo Esta herramienta debe usarse en un equipo SIN RESTRICCIONES (En tu casa).
echo Preparara tu pendrive con la estructura exacta que necesita PuntoBat V2.0
echo para poder evadir los bloqueos corporativos en terreno.
echo ===============================================================================
echo.

:: Detectar unidades USB
echo [INFO] Unidades USB detectadas en este equipo:
wmic logicaldisk get caption,volumename,drivetype | findstr "2"
echo.

set /p "usb=Ingresa la LETRA de tu pendrive (Ejemplo: E): "
if "%usb%"=="" goto INICIO

set "rutausb=%usb%:\Parches_Offline"

echo.
echo [INFO] Creando estructura de carpetas en %usb%:\ ...
if not exist "%rutausb%" (
    mkdir "%rutausb%"
    echo [OK] Carpeta 'Parches_Offline' creada con exito.
) else (
    echo [OK] La carpeta 'Parches_Offline' ya existe.
)

:MENU_DESCARGA
echo.
echo ===============================================================================
echo El pendrive esta listo. ¿Que deseas hacer?
echo (Recuerda guardar las descargas directamente en %usb%:\Parches_Offline)
echo ===============================================================================
echo 1. Abrir Catalogo Oficial de Microsoft (Buscar actualizaciones .msu)
echo 2. Abrir la carpeta del Pendrive para revisar los archivos
echo 0. Salir
echo ===============================================================================
set /p "op=Seleccione una opcion (0-2): "

if "%op%"=="1" goto MS_CATALOG
if "%op%"=="2" goto ABRIR_USB
if "%op%"=="0" exit
goto MENU_DESCARGA

:MS_CATALOG
echo [INFO] Abriendo el Catalogo de Microsoft Update en tu navegador...
echo [NOTA] Busca el parche acumulativo mas reciente para "Windows 11 x64".
start https://www.catalog.update.microsoft.com/Search.aspx?q=Windows+11+Cumulative+Update+x64
pause
goto MENU_DESCARGA

:ABRIR_USB
echo [INFO] Abriendo la carpeta Parches_Offline en el explorador...
start explorer "%rutausb%"
pause
goto MENU_DESCARGA

Comentarios

Entradas más populares de este blog

PuntoBat V1.0

PuntoBat V3.0