|
|
- @echo off
- setlocal EnableDelayedExpansion
- :: ==========================================================
- :: 1. 生成计算机名称 (纯 CMD 实现,不依赖 PowerShell)
- :: 格式: hv + YY + MM + DD + 4位随机大写字母
- :: ==========================================================
- :: --- 步骤 1.1: 获取标准日期 (使用 WMIC,不受区域格式影响) ---
- :: wmic os get localdatetime 输出格式为: YYYYMMDDHHmmss.mmmmmm+UUU
- for /f "usebackq tokens=2 delims==" %%i in (`wmic os get localdatetime /value`) do (
- set "dt=%%i"
- )
- :: 提取年份后两位、月份、日期
- :: dt 格式示例: 20260620...
- set "year=%dt:~2,2%"
- set "month=%dt:~4,2%"
- set "day=%dt:~6,2%"
- :: --- 步骤 1.2: 生成4位随机大写字母 (纯批处理算法) ---
- set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- set "randomPart="
- for /L %%i in (1,1,4) do (
- :: 生成 0-25 的随机数
- set /a "randIndex=!random! %% 26"
- :: 截取对应字符
- for %%j in (!randIndex!) do (
- set "randomPart=!randomPart!!chars:~%%j,1!"
- )
- )
- :: 组合最终名称
- set "NewPCName=HV%year%%month%%day%%randomPart%"
- echo 正在生成新的计算机名称: %NewPCName%
- echo ----------------------------------------
- :: ==========================================================
- :: 2. 修改计算机名称 (使用 WMIC,不依赖 PowerShell)
- :: ==========================================================
- echo 正在修改计算机名称...
- :: 使用 WMIC 重命名计算机
- :: 注意: WMIC 改名后需要重启才能完全生效
- wmic computersystem where name="%COMPUTERNAME%" call rename name="%NewPCName%"
- if %errorlevel% neq 0 (
- echo 错误: 修改计算机名称失败。
- echo 请确保:
- echo 1. 已以【管理员身份】运行此脚本。
- echo 2. 新名称 "%NewPCName%" 在网络中未冲突。
- pause
- exit /b 1
- )
- echo 计算机名称已成功设置为: %NewPCName%
- echo ----------------------------------------
- :: ==========================================================
- :: 3. 删除自身并重启
- :: ==========================================================
- echo 正在删除脚本文件...
- :: 尝试删除当前脚本文件
- shutdown /r /t 0
- del "%~f0" >nul 2>&1
- if exist "%~f0" (
- echo 警告: 无法立即删除自身 (可能被占用)。
- echo 重启后请手动删除该文件。
- ) else (
- echo 脚本已成功自删除。
- )
- echo 系统将在 3 秒后重启以应用更改...
- timeout /t 3 /nobreak >nul
- :: 强制立即重启
- shutdown /r /t 0
复制代码
|
|