64GB内存电脑的一些使用心得,授之以渔,不喜勿喷!(图文)

查看 42|回复 4
作者:win82   
   
授之以鱼,不如授之以渔。我只是说一些我的心得和思路,使大内存在日常能利用起来,我现在的电脑如此设置后,N天不关机,C盘的空间基本就没有涨,欢迎讨论进步,不喜勿喷!!
我的电脑是m15r6外星人笔记本,硬件如上图,系统是VHD系统,23H2企版本(因为我是11代U,25H2的新功能对我用处不大,还是23H2适合我,但我的使用方法在25H2一样适用),一个500G的SSD用于系统相关,另一个一T的SSD做存储用。直接说正题。
一,虚拟内存,设置为0,如果有些软件一定要开虚拟内存才可以,那就设置200MB
二,安装Primo Ramdisk,创建一个虚拟内存盘,我设置的是R盘,40G,用Primo Ramdisk的实用工具,将TEMP的环境变量R:\temp下
三,创建一个setup.cmd,添加到任务计划,这样做对VHD系统好处多多,我是做的每次启动还原系统到23H2.vhdx状态,有个这个setup.cmd,可以对23H2.vhdx进行小修补,不用整个重备份23H2.vhdx
四,软件安装
      尤其是VHD系统,开机自建了C盘,实际文件在"D:\SYS\23H2.vhdx",尽可能的把桌面,文档等文件夹移到D盘,程序也安装到"D:\Program Files"。Office安装,请看下面实例
五,最核心的部分就是setup.cmd,最核心的应用就是建立MKLINK链接,把一些软件的缓存链接到内存盘R盘下,有些自定的预设放到D盘下,这样即不影响每次启动还原系统,也不影响你上次使用时自定义的设置,比如,安装Office,可先MKLINK链接到D盘再安装,写在SETUP.CMD下就可以
::ANSI中文
@echo off
pushd %~dp0 & cd /d "%~dp0"
:open
echo aa>r:\a.txt
if not exist "r:\a.txt" TIMEOUT /T 2 >nul&&goto :open
del /f /q "r:\a.txt" 2>nul
:Office
SET lnkone=C:\Program Files\Microsoft Office
set lnktwo=D:\Program Files\Microsoft Office & call :golink
SET lnkone=C:\Program Files\Microsoft Office 15
set lnktwo=D:\Program Files\Microsoft Office 15 & call :golink
exit
:golink
if not exist "%lnkone%" md "%lnkone%"
rmdir "%lnkone%" /s /q
if not exist "%lnktwo%" md "%lnktwo%"
MKLINK "%lnkone%" "%lnktwo%" /J
goto :eof
比如向日葵远程控制的自定义设置可以在open子脚本的下面加上
SET lnkone=C:\Users\Administrator\AppData\Roaming\Oray
set lnktwo=D:\Program Files\Roaming\Oray & call :golink
比如浏览器相关,选复制C:\Program Files (x86)\Microsoft到D:\Program Files\Microsoft
:Edge
set edgef=User Data
SET lnkone=C:\Program Files (x86)\Microsoft
set lnktwo=D:\Program Files\Microsoft & call :golink
SET lnkone=D:\Program Files\Microsoft\EdgeUpdate\Download
set lnktwo=R:\TEMP\EdgeTemp\Download & call :golink
SET lnkone=D:\Program Files\Microsoft\Edge\Temp
set lnktwo=R:\TEMP\EdgeTemp\Temp & call :golink
SET lnkone=C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data
set lnktwo=R:\TEMP\EdgeTemp\%edgef% & call :golink
if not exist "R:\TEMP\EdgeTemp\%edgef%\a.txt" xcopy "D:\Program Files\Microsoft\User Data\*.*" "R:\TEMP\EdgeTemp\%edgef%\" /s /e /y
说明:set edgef=User Data是用来调试的,比如先set edgef=U,Edge启动后,把你常去的网站去登录一次,比如你的微软账号,139信箱.....,
设置浏览器关闭时清除
退出浏览器,复制"R:\TEMP\EdgeTemp\U"到 "D:\Program Files\Microsoft\User Data",再把set edgef=U改回set edgef=User Data,这个文件夹不到100M,每次启动,SETUP.CMD会复制回R盘,这样弄完了,就不会日子久了C盘下的User Data动不动就几个G,缓存在内存盘下运行也快一些
六,关于VHD系统的安装与设置,例:
1,进入PE或在当前系统下,右键我的电脑--管理--创建23H2,初始化,格式化后,用你自己熟悉的方式安装到这个盘里就可以了,
2,安装,启动,调整到最佳状态,进入PE,创建23H2.vhdx的差分A.vhdx,修改BCD指向A.vhdx
3,如果小修补,可在SETUP.CMD加代码,比如我的之前没设置,现在就加上了
:移除主文件夹图标
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}" /f
:移除图库图标
reg add "HKCU\Software\Classes\CLSID\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}" /f /v "System.IsPinnedToNameSpaceTree" /t REG_DWORD /d 0
echo 正在停止并禁用服务...
sc stop NVDisplay.ContainerLocalSystem >nul 2>&1
sc config NVDisplay.ContainerLocalSystem start= disabled >nul 2>&1
sc stop "igfxCUIService2.0.0.0" >nul 2>&1
sc config "igfxCUIService2.0.0.0" start= disabled >nul 2>&1
七,VHD的更新,比如在A.vhdx下,更新了系统版本
1,进入PE,在磁盘管理下创建一个新的XXX.vhdx,创建后就退出窗口,不要继续操作
2,双击A.vhdx挂载磁盘,在DismGui程序下,磁盘对考,XXX.vhdx会在你选择列表中。
3,对考完成,删除23H2.vhdx和A.vhdx,将XXX.vhdx改成23H2.vhdx重建差分A.vhdx,这样你就得到了一个新的最小体积的原始镜像
八,每次启动后自动还原,将CMD放在23H2.vhdx同级文件夹下,比如"D:\SYS\更新启动项.cmd",在SETUP中增加一行start "" "D:\SYS\更新启动项.cmd"
更新启动项.cmd
--------------------------------------
@echo off
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion
cls
:: 差分子文件变量
set "VHD1=A.vhdx"
set "VHD2=B.vhdx"
:: 父文件变量
set "BASE_VHD=23h2.vhdx"  
:: 强制删除A.vhdx和B.vhdx(无论是否存在)
echo 正在清理旧文件...
if exist "!VHD1!" (
    del /f /q "!VHD1!" >nul 2>&1
    if not exist "!VHD1!" (echo ✅ 已删除 !VHD1!) else (echo ⚠️ 无法删除 !VHD1!,可能被占用)
)
if exist "!VHD2!" (
    del /f /q "!VHD2!" >nul 2>&1
    if not exist "!VHD2!" (echo ✅ 已删除 !VHD2!) else (echo ⚠️ 无法删除 !VHD2!,可能被占用)
)
echo.
:: 1. 获取当前目录
pushd %~dp0 & cd /d "%~dp0"
set "CUR_DIR=%cd%"
echo Current folder: %CUR_DIR%
echo VHD files to switch: %VHD1% ↔ %VHD2%
:: 2. 提取盘符和路径
set "DRIVE=%CUR_DIR:~0,2%"
set "REL_PATH=%CUR_DIR:~2%"
:: 3. 自动搜索VHD启动项ID
echo.
echo 正在自动搜索VHD启动项ID...
set "VHDX_ID="
set "in_vhd_entry=0"
:: 遍历bcdedit输出,提取包含"vhd"的启动项ID
for /f "tokens=1,* delims=:" %%a in ('bcdedit /enum /v 2^>nul') do (
    :: 清理行首空格和特殊字符
    set "line=%%a%%b"
    set "line=!line: =!"
    :: 检测到标识符行,提取ID
    if "!line:~0,10!"=="identifier" (
        set "current_id=!line:identifier=!"
        set "current_id=!current_id:{=!"  :: 移除左大括号
        set "current_id=!current_id:}=!"  :: 移除右大括号
        set "current_id=!current_id:"=!"  :: 移除引号
        set "in_vhd_entry=0"  :: 重置标记
    )
    :: 检测到包含"vhd"的行,标记为VHD启动项
    echo "!line!" | findstr /i "vhd" >nul 2>&1
    if !errorlevel! equ 0 (
        set "in_vhd_entry=1"
    )
    :: 若在VHD启动项中且已获取ID,则确定为目标ID
    if !in_vhd_entry! equ 1 if defined current_id (
        set "VHDX_ID={!current_id!}"
        goto :found_vhd_id  :: 找到后退出循环
    )
)
:found_vhd_id
:: 验证ID是否存在
if "!VHDX_ID!"=="" (
    echo ❌ 错误:未找到VHD类型的启动项,请检查系统配置
    pause
    exit /b 1
)
echo ✅ 找到VHD启动项ID:!VHDX_ID!
:: 4. 构建路径
set "SUFFIX_DEVICE=,locate=custom:12000002"
set "SUFFIX_OSDEVICE=,locate=custom:22000002"
set "VHD1_DEV=vhd=[%DRIVE%]%REL_PATH%\%VHD1%%SUFFIX_DEVICE%"
set "VHD1_OS=vhd=[%DRIVE%]%REL_PATH%\%VHD1%%SUFFIX_OSDEVICE%"
set "VHD2_DEV=vhd=[%DRIVE%]%REL_PATH%\%VHD2%%SUFFIX_DEVICE%"
set "VHD2_OS=vhd=[%DRIVE%]%REL_PATH%\%VHD2%%SUFFIX_OSDEVICE%"
:: 5. 检测文件存在性(清理后应该都不存在)
set "VHD1_EXIST=0"
set "VHD2_EXIST=0"
if exist "%CUR_DIR%\%VHD1%" set "VHD1_EXIST=1"
if exist "%CUR_DIR%\%VHD2%" set "VHD2_EXIST=1"
:: 6. 显示检测结果
echo.
echo ==============================================
echo  File Detection:
if %VHD1_EXIST% equ 1 (echo ✅ %VHD1% exists) else (echo ❌ %VHD1% not found)
if %VHD2_EXIST% equ 1 (echo ✅ %VHD2% exists) else (echo ❌ %VHD2% not found)
echo ==============================================
:: 7. 确定目标差分文件
set "TARGET="
set "NEW_DEV="
set "NEW_OS="
if %VHD1_EXIST% equ 1 (
    set "TARGET=%VHD2%"
    set "NEW_DEV=%VHD2_DEV%"
    set "NEW_OS=%VHD2_OS%"
) else if %VHD2_EXIST% equ 1 (
    set "TARGET=%VHD1%"
    set "NEW_DEV=%VHD1_DEV%"
    set "NEW_OS=%VHD1_OS%"
) else (
    :: 当A和B都不存在时,默认使用A.vhdx
    set "TARGET=%VHD1%"
    set "NEW_DEV=%VHD1_DEV%"
    set "NEW_OS=%VHD1_OS%"
    echo 提示:所有文件均不存在,默认切换目标为 %TARGET%
)
:: 8. 先执行差分文件创建任务
echo.
echo ==============================================
echo 子文件创建任务:
echo  母文件:%BASE_VHD%
echo  子文件:%TARGET%(与启动目标一致)
echo  目标路径:%CUR_DIR%
echo ==============================================
set "CREATE_SUCCESS=0"
:: 检查母文件是否存在
if not exist "%CUR_DIR%\%BASE_VHD%" (
    echo ❌ 错误:母文件 %BASE_VHD% 未在 %CUR_DIR% 找到,无法创建子文件
) else (
    echo ⚠️  正在创建差分文件(需管理员权限)...
    (
        echo create vdisk file="%CUR_DIR%\%TARGET%" parent="%CUR_DIR%\%BASE_VHD%"
        echo exit
    ) | diskpart
    :: 验证差分文件创建结果
    if exist "%CUR_DIR%\%TARGET%" (
        echo ✅ 成功:差分文件 %TARGET% 已创建 → %CUR_DIR%\%TARGET%
        set "CREATE_SUCCESS=1"
    ) else (
        echo ❌ 失败:差分文件未创建,请检查权限和母文件完整性
    )
)
echo ==============================================
:: 9. 只有差分文件创建成功后,才执行引导切换
if %CREATE_SUCCESS% equ 1 (
    echo.
    echo Auto-switching to %TARGET%...
    bcdedit /enum %VHDX_ID% >nul 2>&1
    timeout /t 1 /nobreak >nul
    bcdedit /set %VHDX_ID% device "%NEW_DEV%" >nul
    bcdedit /set %VHDX_ID% osdevice "%NEW_OS%" >nul
    bcdedit /enum %VHDX_ID% >nul 2>&1
    timeout /t 1 /nobreak >nul
    :: 验证引导切换结果
    set "FINAL_DEV="
    for /f "tokens=2,*" %%a in ('bcdedit /enum %VHDX_ID% /v ^| findstr /i "device "') do set "FINAL_DEV=%%b"
    echo.
    echo ==============================================
    echo Switch Completed! Target: %CUR_DIR%\%TARGET%
    echo Final Path: %FINAL_DEV%
    echo ==============================================
    if "%FINAL_DEV%"=="%NEW_DEV%" (
        echo ✅ Success: Path is correct
    ) else (
        echo ⚠️  Success: Actual path set to %NEW_DEV%
    )
) else (
    echo.
    echo ⚠️  差分文件创建失败,未修改启动引导配置
    echo.
    echo 按任意键退出...
    set /p=
)
endlocal
exit

文件, 启动项, 差分

AllenW   
感谢分享
Jaosn   
是ramos吗?我一般用冰点还原。不过可能会损失一点性能
Windn0   
学习一下
白前辈   

wsdyleon 发表于 2025-12-8 09:50
是ramos吗?我一般用冰点还原。不过可能会损失一点性能

是Primo Ramdisk,在咱们坛里有PJ的,用服务器版最好,
您需要登录后才可以回帖 登录 | 立即注册

返回顶部