无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 1598|回复: 27
打印 上一主题 下一主题

[分享] 抛个砖头--PrimoCache批处理自动设置

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-21 09:54:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在勤奋的狐狸波贴子里提到PrimoCache命令行配置(http://bbs.wuyou.net/forum.php?mod=viewthread&tid=434147
刚好在之前也有批处理设置的想法,于是在fulibo的指引下越滑越远......
最先想到的就是按照自己的机器配置写个简单批处理:

  1.     cd /d "C:\Program Files\PrimoCache"
  2.     set disk=没找到盘
  3.     for /f "tokens=2" %%i in ('rxpcc ls^|find "Vol"^|find "Level-2"') do set disk=%%i
  4.     for /f "tokens=4" %%i in ('rxpcc ls^|find "%disk%"') do set disk=%%i
  5.     echo 二级缓存是%disk%--{A340EFBD-5A9F-444A-B642-A42B5A9CD496}

  6.     rxpcc new -v d -m 4096 -l %disk% -r 255,3 -w 20 -a average,freewritten,flushsleep,flushtoL2 -p=fromL2 -s
  7.     rem D盘,内存4G,二级缓存3%写入,缓存时间20秒,均衡模式,待机刷入缓存,L1满时转L2,-p优先取L2,-s静默
  8.     rxpcc new -v c -m 4096 -w INF -a average,freewritten,flushsleep -p=boot -s
  9.     rem C盘,内存4G,缓存时间无限,均衡模式,待机刷入缓存,-p启动时开始,优先取L2,-s静默
复制代码


我和我推荐给周围朋友的配置,都是固态+机械。固态用于启动+二缓,通常128-512G,机械用于存储数据,通常0.5-18T。
    大机械硬盘性价比高,很多家庭都有小孩从小到大的照片视频,收藏的歌曲视频电影、必备的软件什么的机械盘万一
    有误操作,数据可恢复,固态就呵呵了。
配置不是重点,大家也不必拿这些考虑做讨论,主要想讨论的,是怎么配置PrimoCache更合理,以及简化配置的方法。诚
    心地说,用各种语言和脚本,就没有比批处理更差的了,效率低不说,还容易出错。但是,批处理的即改即用和不要
    求环境仍然使其生存了下来。本次探讨是以批处理为基础的命令行PrimoCache配置。由于自身经常下载各大论坛新出
    的操作系统安装到自用实体机测试,重装系统太频繁,只好大量使用绿色软件,连最常用的静默安装软件们也要弄个
    批处理方式来安装。PrimoCache是我的必装软件之一,每次手动设置时都在想要花点时间弄个自动设置方法出来。
后来发现,在帮同事装机时还得按不同的环境用不同的参数,于是写了个自动设置版初稿

以下批处理在Win10x64中文版下调试,不确定能英文版或磁盘没有卷标的电脑上正确运行,仅做技术讨论,
内有删除分区的操作,数据重要的电脑请务必谨慎,数据掉了我也没办法负责任。
希望有探讨的同学共同完善


  1.     [url=home.php?mod=space&uid=336905]@echo[/url] Off
  2.     rem 要多测试,比如卷标为空时,取分区空间位置是否正确等
  3.     set disk=%ProgramFiles%\PrimoCache
  4.     if not exist "%disk%\FancyCcV.exe" set msg1=程序未安装成功,不能设置PrimoCache.&goto ERROR
  5.     cd /d "%disk%"
  6.     setlocal enabledelayedexpansion
  7.     set debug=0
  8.     set "MB= "
  9.     set GB=000
  10.     set TB=000000

  11.     echo 查几只硬盘、是否SSD+机械盘、内存大小
  12.     set SSD_NUM=0
  13.     for /f %%i in ('powershell Get-PhysicalDisk^|find "SSD"') do set SSD=%%i && set /a SSD_NUM=!SSD_NUM! + 1
  14.     set HDD_NUM=0
  15.     for /f %%i in ('powershell Get-PhysicalDisk^|find "HDD"') do set HDD=%%i && set /a HDD_NUM=!HDD_NUM! + 1
  16.     wmic os get TotalVisibleMemorySize
  17.     if %SSD_NUM% gtr 1 set msg1=固态硬盘大于一只,程序无法正确判断应该怎么设缓存.
  18.     if %HDD_NUM% gtr 1 set msg2=机械硬盘大于一只,程序无法正确判断应该怎么设缓存.
  19.     for /f "tokens=2*" %%i in ('systeminfo^|find "物理内存总量"') do set memory=%%i %%j
  20.     if not "%memory:~-2%"=="MB" set msg3=内存大小超出认知,程序无法正确判断应该怎么设缓存.
  21.     rem 去除最后两位,去除中间的逗号
  22.     set memory=%memory:~0,-2%
  23.     set /a memory=%memory:,=% /1000
  24.     if %memory% lss 8 set msg3=内存太小,还是不使用缓存程序好些.
  25.     if "%msg1%%msg2%%msg3%" gtr "" goto ERROR
  26.     echo 固态%SSD_NUM%只,排位%SSD%;机械%HDD_NUM%只,排位%HDD%,内存大小:%memory%
  27.     rem =======================================================================================================
  28.     echo 查看系统磁盘环境
  29.     set hd=MBR
  30.     for /f "tokens=2,8" %%i in ('echo list disk ^|diskpart') do (
  31.         set disks=%%i
  32.         if "%%j"=="*" set hd=GPT
  33.         )
  34.     set /a disks=%disks% + 1
  35.     if %debug%==1 echo 磁盘引导方式是:%hd%,共有%disks%只磁盘
  36.     set boot=没找到
  37.     set system=没找到
  38.     for /f "tokens=2,3,6,7,8" %%i in ('echo list vol ^|diskpart^|find "启动"') do (
  39.         set disk_c=%%i
  40.         set system=%%j
  41.         if "%%l"=="TB" set c_size_0=000000
  42.         if "%%l"=="GB" set c_size_0=000
  43.         if "%%l"=="MB" set c_size_0=
  44.         set c_size=%%k%c_size_0%
  45.         if "%%m"=="TB" set c_size_0=000000
  46.         if "%%m"=="GB" set c_size_0=000
  47.         if "%%m"=="MB" set c_size_0=
  48.         if "%%k"=="磁盘分区" set c_size=%%l%c_size_0%
  49.         )
  50.     for /f "tokens=2" %%i in ('echo list vol ^|diskpart^|find "系统"') do set boot=%%i
  51.     if %debug%==1 echo 启动分区号是%boot%,系统安装到了第%disk_c%个分区,即%system%盘,大小是%c_size%兆
  52.     for /f "tokens=2" %%i in ('echo list vol^|diskpart^|find "磁盘分区"') do set vols=%%i
  53.     set /a vols=%vols% + 1
  54.     if %debug%==1 echo 硬盘共有%vols%个分区
  55.     set disk_u=没找到
  56.     for /f "tokens=3" %%i in ('echo list vol^|diskpart^|find "可移动"') do set disk_u=%%i& goto U_NEXT
  57.     :U_NEXT
  58.     if %debug%==1 echo 第一个U盘:%disk_u%
  59.     set udisks=0
  60.     for /f "tokens=3" %%i in ('echo list vol^|diskpart^|find "可移动"') do set /a udisks=!udisks! + 1
  61.     if %debug%==1 echo 共有%udisks%个U盘
  62.     echo 共有%disks%只磁盘,共有%udisks%个U盘,第一只U盘:%disk_u%。固态硬盘共有%vols%个分区,磁盘引导方式是:%hd%,
  63.     echo 启动分区号是%boot%,系统安装到了第%disk_c%个分区,即%system%盘,大小是%c_size%兆
  64.     rem =======================================================================================================
  65.     echo 是否SSD有空余未分区空间
  66.     (    echo.select disk %SSD%
  67.         echo.list partition
  68.     )|diskpart|find "分区   ">%tmp%\diskpart.txt
  69.     set all=0
  70.     set num=0
  71.     set level2_num=0
  72.     set level2_size=0
  73.     set level2=0
  74.     for /f "tokens=2,3,4,5" %%i in (%tmp%\diskpart.txt) do (
  75.         set size=%%k!%%l!
  76.         set /a all=!all! + !size!
  77.         set part%%i=!size!
  78.         set /a num=!num! + 1
  79.         if "%%j"=="未知" set /a level2_num=!level2_num! + 1 && set level2=!num! && set level2_size=!size!
  80.         echo 分区!num!单位是%%l,size=!size!M,all=!all!
  81.         )
  82.     set /a all=%all% / 1000
  83.     for /f "tokens=4,5" %%i in ('echo list disk^|diskpart^|find "磁盘 %SSD%"') do set /a size=%%i!%%j! /1000
  84.     if not "%all%"=="%size%" set msg=空间未分完
  85.     if     "%all%"=="%size%" set msg=已分配完
  86.     echo 有%level2_num%个疑是二级缓存,最终分区%level2%,大小为%level2_size%M
  87.     if not %level2_num%==1 set set level2=& set level2_size=
  88.     for /f "tokens=5" %%i in ('rxpcc ls^|find "Vol"^|find "Level-2"') do set level2_size_find=%%i
  89.     set ok=0
  90.     if "%level2_size_find:~-2%"=="GB" set ok=1
  91.     if "%level2_num%"=="1" set ok=1
  92.     set level2_size_num=%level2_size_find:~0,-2%
  93.     echo 二级缓存大小是%level2_size_num%
  94.     set /a level2_size_num=%level2_size_num% 2>nul
  95.     echo 二级缓存取整数后是%level2_size_num%
  96.     set /a level2_size=level2_size / 1000

  97.     echo 硬盘%SSD%是%size%G大小,!num!个分区共用了%all%G,%msg%。
  98.     echo 有%level2_num%个疑是二级缓存,最终分区%level2%,大小为%level2_size%G,而寻找到的二缓大小是%level2_size_num%G。
  99.     set /a tmp1=%level2_size_num% - %level2_size%
  100.     if %level2_size% gtr %level2_size_num% set tmp1=%level2_size% - %level2_size_num%
  101.     if tmp1 gtr 1 set ok=0
  102.     if "%msg%"=="已分配完" if %ok%==0 goto PrimoCache
  103.     echo 找到的二级缓存分区和疑似分区大小相同,现在删除并重建...
  104.     (    echo.select disk %SSD%
  105.         echo.select partition %level2%
  106.         echo.delete part
  107.         echo.list part
  108.         echo.exit
  109.     )|diskpart|find "分区   "
  110.     set /a all=%all% - %level2_size%
  111.     rem =======================================================================================================
  112.     echo 正在把SSD剩余空间分配给二级缓存
  113.     set /a SSD_Free=152000
  114.     if %SSD_Free% lss 5 set msg1=SSD余空太小,放弃建二级缓存
  115.     if exist "L:\." set msg2=建立SSD新分区时,驱动器号L被占用无法继续分配.& goto ERROR
  116.     (    echo.select disk %SSD%
  117.         echo.list partition
  118.     )|diskpart|find "分区   ">%tmp%\diskpart.txt
  119.     set all=0
  120.     set num_new=0
  121.     for /f "tokens=2,4,5" %%i in (%tmp%\diskpart.txt) do (
  122.         set size=%%j!%%k!
  123.         set /a all=!all! + !size!
  124.         set part%%i=!size!
  125.         set /a num_new=!num_new! + 1
  126.         if "%SSD_Free%"=="!size!" set SSD_NEW_Free=%%j%%k&&set SSD_NEW_GB=!size!
  127.         echo 分区!num_new!单位是%%k,size=!size!M,all=!all!,SSD_NEW_GB=!SSD_NEW_GB!
  128.         )
  129.     set /a all=%all% / 1000
  130.     rem del %tmp%\diskpart.txt
  131.     set /a SSD_NEW_PART = %num_new% - %num%
  132.     if not "%SSD_NEW_PART%"=="1" set msg1=建立SSD新分区出错,请检查.& goto ERROR
  133.     if %SSD_NEW_GB% gtr 300 set msg2=建立SSD新分区有点大
  134.     if %SSD_NEW_GB% lss 3   set msg2=建立SSD新分区有点小
  135.     echo 新建的分区号是%num_new%,大小是%SSD_NEW_GB%GB,即将转换为二级缓存
  136.     set SSD_NEW_VOL=
  137.     for /f "tokens=2,3,7" %%i in ('echo list vol^|diskpart^|find "RAW"') do (
  138.         rem 格式为RAW并且驱动器号是L,大小又相同,肯定就没错了。
  139.         if %%j==L if "%%k"=="%SSD_NEW_GB% GB" set SSD_NEW_VOL=%%i
  140.         )
  141.     echo rxpcc storage format -v %SSD_NEW_VOL% -s
  142.     rem =======================================================================================================
  143.     :PrimoCache
  144.     set disk=没找到盘
  145.     for /f "tokens=2" %%i in ('rxpcc ls^|find "Vol"^|find "Level-2"') do set disk=%%i
  146.     echo 得到二级缓存位于RX排位中的%disk%
  147.     for /f "tokens=4" %%i in ('rxpcc ls^|find "%disk%"') do set disk=%%i
  148.     echo 得到二级缓存卷代码是%disk%,比如({A340EFBD-5A9F-444A-B642-A42B5A9CD496})
  149.     set Primo=-a average,freewritten,flushsleep
  150.     rem 均衡模式,待机刷入缓存;后面一句:二级缓存3%写入,L1满时转L2,-p优先取L2
  151.     if not "%disk%"=="没找到盘" set Primo=-l %disk% -r 255,3 -a average,freewritten,flushsleep,flushtoL2 -p=fromL2
  152.     echo 正在设置D盘缓存,内存4G,缓存时间20秒,-s静默 -l %disk% -r 255,3设二级缓存3^%写入:
  153.     echo rxpcc new -v d -m 4096 -w 20 -s %Primo%
  154.     rxpcc new -v d -m 4096 -w 20 -s %Primo%
  155.     echo 正在设置C盘缓存,内存4G,缓存时间无限,均衡模式,待机刷入缓存,-p启动时开始,优先取L2,-s静默:
  156.     echo rxpcc new -v c -m 4096 -w INF -a average,freewritten,flushsleep -p=boot -s
  157.     rxpcc new -v c -m 4096 -w INF -a average,freewritten,flushsleep -p=boot -s
  158.     rem =======================================================================================================
  159.     :ERROR
  160.     :END
  161.     echo.%msg1%%msg2%%msg3%
  162.     PUSHD "%~DP0"
  163.     del "%0"
  164.     timeout 8
复制代码


评分

参与人数 4无忧币 +20 收起 理由
董大 + 5 赞一个!
lemonle79 + 5 很给力!
d9o + 5 赞一个!
fulibo + 5 你是自谦了,我向您学习!

查看全部评分

2#
发表于 2024-2-21 10:03:23 | 只看该作者
感谢分享
回复

使用道具 举报

3#
发表于 2024-2-21 10:18:37 | 只看该作者
通用版不太好搞,毕竟硬件不同,给自己设备做个还是挺好,一键设置
回复

使用道具 举报

4#
发表于 2024-2-21 10:22:30 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2024-2-21 11:09:00 | 只看该作者
谢谢
回复

使用道具 举报

6#
发表于 2024-2-21 11:10:56 | 只看该作者
谢楼主分享
回复

使用道具 举报

7#
发表于 2024-2-21 11:35:19 | 只看该作者
批处理确实高效   不过也确实考验耐心和技术
回复

使用道具 举报

8#
发表于 2024-2-21 12:22:55 | 只看该作者
谢谢干货
回复

使用道具 举报

9#
发表于 2024-2-21 13:12:34 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

10#
发表于 2024-2-21 13:29:17 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
发表于 2024-2-21 13:35:05 | 只看该作者
谢谢分享,研究一下楼主的各项设置
回复

使用道具 举报

12#
发表于 2024-2-21 13:38:42 来自手机 | 只看该作者
谢谢楼主分享好东西
回复

使用道具 举报

13#
发表于 2024-2-21 13:48:23 | 只看该作者
感谢楼主分享
回复

使用道具 举报

14#
发表于 2024-2-21 13:57:52 | 只看该作者
我用的是UltraRAMDisk,设置简单
回复

使用道具 举报

15#
发表于 2024-2-21 15:04:58 | 只看该作者
谢谢分享。
回复

使用道具 举报

16#
发表于 2024-2-21 17:23:06 | 只看该作者
感谢分享
回复

使用道具 举报

17#
发表于 2024-2-22 16:01:01 | 只看该作者
感谢分享,有没有Primo Ramdisk的命令安装和配置呢。

点评

命令行可以直接用问号来查询功能  详情 回复 发表于 2024-2-23 13:27
回复

使用道具 举报

18#
发表于 2024-2-22 16:09:29 | 只看该作者
感谢分享。。。。。
回复

使用道具 举报

19#
发表于 2024-2-22 16:17:32 | 只看该作者
回复

使用道具 举报

20#
发表于 2024-2-23 11:20:15 | 只看该作者
PrimoCache在win10之前对系统的加速很明显,尤其是对机械硬盘,但win10之后就不是很明显了。虽然我现在还是必装这个软件,但基本上就指定1G-2G内存当缓存就完了。

点评

我的机械D盘16T,本身就慢,我自己也是一段时间弄这个一段时间弄那个的,如果不对常用部分缓存的话,就太慢了。配了32G内存,弄了4G来缓存D盘,然后把固态分了一部分二缓给D盘  详情 回复 发表于 2024-2-23 13:29
回复

使用道具 举报

21#
 楼主| 发表于 2024-2-23 13:27:18 | 只看该作者
fybhwsx 发表于 2024-2-22 16:01
感谢分享,有没有Primo Ramdisk的命令安装和配置呢。

命令行可以直接用问号来查询功能
回复

使用道具 举报

22#
 楼主| 发表于 2024-2-23 13:29:46 | 只看该作者
Climbing 发表于 2024-2-23 11:20
PrimoCache在win10之前对系统的加速很明显,尤其是对机械硬盘,但win10之后就不是很明显了。虽然我现在还是 ...

我的机械D盘16T,本身就慢,我自己也是一段时间弄这个一段时间弄那个的,如果不对常用部分缓存的话,就太慢了。配了32G内存,弄了4G来缓存D盘,然后把固态分了一部分二缓给D盘
回复

使用道具 举报

23#
发表于 2024-2-23 14:19:45 | 只看该作者
感谢分享、学习一下
回复

使用道具 举报

24#
发表于 2024-2-23 14:38:52 | 只看该作者
感谢分享
回复

使用道具 举报

25#
发表于 2024-2-23 18:55:30 | 只看该作者
多谢热心提供分享!
回复

使用道具 举报

26#
发表于 2024-2-27 17:09:30 | 只看该作者
学习
回复

使用道具 举报

27#
发表于 2024-4-12 11:26:19 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

28#
发表于 2024-4-26 17:21:30 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-10 17:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表