找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 153|回复: 20

[其他] 将 pecmd 代码改为批处理

[复制链接]
发表于 昨天 09:53 | 显示全部楼层 |阅读模式
请哪位老师将这一段代码(pecmd 代码)改成批处理代码,谢谢

  1. //检测 X 盘的实际剩余空间(mb,因为 X 盘可虚标)并与输入的参数对比,如果有剩余
  2. //就把剩余值写入注册表,不够用就设置 errorlevel 为 1
  3. FIND $%~1=,ENVI xNeed=0!ENVI xNeed=%~1
  4. FORM -free &X=%SystemDrive%
  5. CALC #xSize=%X%/1024/1024
  6. IFEX MEM=?,iMemFree
  7. IFEX $%iMemFree%<%xSize%,ENVI xSize=%iMemFree%
  8. CALC #xMargin=%xSize%-%xNeed%
  9. IFEX $%xMargin%>0,
  10. {
  11.         REGI $HKCU\Software\H3\Sysinfo\\xMargin=%xMargin%
  12.         WAIT 500
  13. }!
  14. {
  15.         REGI HKCU\Software\H3\Sysinfo\\xMargin=
  16.         WAIT 500
  17.         TEAM EXIT= 1| EXIT
  18. }
复制代码
发表于 昨天 11:27 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-6-12 12:47 编辑

以下代码存为 test.bat 运行,预设标定值 xNeed=1000 (mb)可自定义...

test.bat
  1. @echo off &setlocal &set "xNeed=1000"
  2. for /f "tokens=2 delims=: " %%z in ('fsutil volume diskfree "X:" ') do set "z=%%z"
  3. set "z=%z:~,-6%" &set/a "z/=1048,z*=1000,xMargin=z-xNeed"
  4. if %z% lss %xNeed% exit/b 1
  5. reg add "HKCU\Software\H3\Sysinfo" /v "xMargin" /t reg_sz /d %xMargin% /f
  6. exit/b 0
复制代码
发表于 昨天 12:03 | 显示全部楼层
如果可用 powershell,用以下代码以便剩余空间的圆整值更精确...

test.bat
  1. @echo off &setlocal &set "xNeed=1000"
  2. for /f "delims=" %%z in ('powershell -nop -c "[math]::round((get-psdrive 'X').free/1mb,0)-%xNeed%" ') do if %%z lss 0 (exit/b 1) else reg add "HKCU\Software\H3\Sysinfo" /v "xMargin" /t reg_sz /d %%z /f
  3. exit/b
复制代码
 楼主| 发表于 昨天 12:14 | 显示全部楼层
aloha20200628 发表于 2026-6-12 11:27
以下代码存为 test.bat 运行,预设标定值 xNeed=1000 (mb)可自定义...

test.bat

谢谢老师,我试试
 楼主| 发表于 昨天 12:15 | 显示全部楼层
aloha20200628 发表于 2026-6-12 12:03
如果可用 powershell,用以下代码以便剩余空间的圆整值更精确...

test.bat

谢谢老师,是在PE下用,一般不支持 powershell
发表于 昨天 12:51 | 显示全部楼层
766266yyn 发表于 2026-6-12 12:14
谢谢老师,我试试

二楼代码第二行已将盘符订正为 X: 你可自定义。
 楼主| 发表于 昨天 16:36 | 显示全部楼层
aloha20200628 发表于 2026-6-12 11:27
以下代码存为 test.bat 运行,预设标定值 xNeed=1000 (mb)可自定义...

test.bat

保存为 text.cmd (ANSI),运行没有反应
发表于 昨天 16:58 | 显示全部楼层
766266yyn 发表于 2026-6-12 16:36
保存为 text.cmd (ANSI),运行没有反应

PE 系统有内置的 fsutil.exe 吗?
验证方法:可直接在命令行运行 fsutil 看返回值?
 楼主| 发表于 昨天 17:01 | 显示全部楼层
aloha20200628 发表于 2026-6-12 16:58
PE 系统有内置的 fsutil.exe 吗?
验证方法:可直接在命令行运行 fsutil 看返回值? ...


运行 fsutil.exe 没有反应,系统文件夹中有这个文件
发表于 昨天 17:42 | 显示全部楼层
766266yyn 发表于 2026-6-12 17:01
运行 fsutil.exe 没有反应,系统文件夹中有这个文件

试试以下代码,代码第二行 X:\ 可改为你的目标盘符...

test.bat
  1. @echo off &setlocal &set "xNeed=1000"
  2. for /f "tokens=3 delims= " %%z in ('dir /ad/-c X:\ ^|find /i " 可用字节" ') do set "z=%%z"
  3. set "z=%z:~,-6%" &set/a "z/=1048,z*=1000,xMargin=z-xNeed"
  4. if %z% lss %xNeed% exit/b 1
  5. reg add "HKCU\Software\H3\Sysinfo" /v "xMargin" /t reg_sz /d %xMargin% /f
  6. exit/b 0
复制代码
 楼主| 发表于 昨天 19:42 | 显示全部楼层
aloha20200628 发表于 2026-6-12 17:42
试试以下代码,代码第二行 X:\ 可改为你的目标盘符...

test.bat

谢谢老师
1楼代码是取自 hhh333 老师 PE 中,其原代码是加载 Pale Moon 浏览器代码的一部分,完整文件和代码如下:

目录文件:
PaleMoon.7z
PaleMoon.cmd
xMargin.wcs

PaleMoon.cmd 原代码:

  1. @echo off
  2. pushd %~dp0
  3. set Br=PaleMoon
  4. set BrDir=%ProgramFiles%\%Br%
  5. set ToolName=Pale Moon
  6. set UserData=%BrDir%\User Data
  7. if exist "%BrDir%\%Br%.exe" goto Link
  8. set needX=110
  9. echo.
  10. echo 本工具将占用 X 盘 %NeedX%mb 空间
  11. echo.
  12. echo 正在检测 X 盘的实际容量 .....
  13. pecmd xMargin.wcs %needX%
  14. if errorlevel 1 goto ERR
  15. echo.
  16. echo 容量足够,现在开始安装 %ToolName% .....
  17. 7z.exe x %Br%.7z -y -aos -o"%ProgramFiles%"
  18. del /q "%Public%\Desktop\%ToolName% 安装.lnk" >nul
  19. echo 安装完成!
  20. goto Link

  21. :Link
  22. pecmd LINK %Public%\Desktop\%Br% 浏览器,%BrDir%\%Br%.exe
  23. pecmd LINK %%Programs%%\网络\%Br% 浏览器,%BrDir%\%Br%.exe
  24. pecmd ENVI @@DeskTopFresh=1
  25. "%BrDir%\%Br%.exe"
  26. goto END

  27. :ERR
  28. color fc
  29. rem echo X 盘的信息(注意可用字节数)
  30. rem dir x:\ /ad /d
  31. cls
  32. echo X 盘的空间不够
  33. echo.
  34. echo 请注意:
  35. echo 安装 %ToolName% 将占用 X 盘 %NeedX%mb 空间,
  36. echo 目前 X 盘的实际可用空间可能不够用,请清理 X 盘或设置 X 盘的系统缓存。
  37. echo.
  38. echo ==================================
  39. echo 按任意键退出!
  40. pause>nul

  41. :END
  42. exit
复制代码



xMargin.wcs 原代码:

  1. `检测X盘的实际剩余空间(MB,因为X盘可虚标)并与输入的参数对比,如果有剩余就把剩余值写入注册表,不够用就设置errorlevel为1
  2. FIND $%~1=,ENVI xNeed=0!ENVI xNeed=%~1
  3. FORM -free &X=%SystemDrive%
  4. CALC #xSize=%X%/1024/1024
  5. IFEX MEM=?,iMemFree
  6. IFEX $%iMemFree%<%xSize%,ENVI xSize=%iMemFree%
  7. CALC #xMargin=%xSize%-%xNeed%
  8. IFEX $%xMargin%>0,
  9. {
  10.         REGI $HKCU\Software\H3\Sysinfo\\xMargin=%xMargin%
  11.         WAIT 500
  12. }!
  13. {
  14.         REGI HKCU\Software\H3\Sysinfo\\xMargin=
  15.         WAIT 500
  16.         TEAM EXIT= 1| EXIT
  17. }
复制代码


以上 PaleMoon.cmd 调用 xMargin.wcs

我的需求是将 xMargin.wcs 转换为 cmd 代码并加到 PaleMoon.cmd 之中,不用再调用 xMargin.wcs
发表于 昨天 20:24 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-6-12 20:28 编辑
766266yyn 发表于 2026-6-12 19:42
谢谢老师
1楼代码是取自 hhh333 老师 PE 中,其原代码是加载 Pale Moon 浏览器代码的一部分,完整文件和 ...


用以下代码替换 paleMoon.cmd 源代码中第 13-14 行即可...

  1. for /f "tokens=3 delims= " %%z in ('dir /ad/-c X:\ ^|find /i " 可用字节" ') do set "z=%%z"
  2. set "z=%z:~,-6%" &set/a "z/=1048,z*=1000,xMargin=z-needX"
  3. if %z% lss %needX% (reg add "HKCU\Software\H3\Sysinfo" /v "xMargin" /t reg_sz /d "" /f & goto ERR)
  4. reg add "HKCU\Software\H3\Sysinfo" /v "xMargin" /t reg_sz /d "%xMargin%" /f
复制代码
 楼主| 发表于 昨天 20:41 | 显示全部楼层
aloha20200628 发表于 2026-6-12 20:24
用以下代码替换 paleMoon.cmd 源代码中第 13-14 行即可...

成功了,谢谢老师。

有一个小问题,安装完成后如何自动退出批处理(自动关闭窗口)
发表于 昨天 21:23 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-6-12 21:28 编辑
766266yyn 发表于 2026-6-12 20:41
成功了,谢谢老师。

有一个小问题,安装完成后如何自动退出批处理(自动关闭窗口) ...


11楼 palemoon.cmd 源代码在安装完成后会转到第22行执行23-26行的代码,若运行无误会转到末尾第44行自动退出。
如果你不想继续安装完成后的上述操作,可将第20行改为 goto END 即可。
发表于 昨天 21:30 | 显示全部楼层
766266yyn 发表于 2026-6-12 19:42
谢谢老师
1楼代码是取自 hhh333 老师 PE 中,其原代码是加载 Pale Moon 浏览器代码的一部分,完整文件和 ...

PaleMoon.cmd代码第17行有个:7z.exe
这玩意是所有PE默认都有吗?还是你们这些大佬定制化的PE里面才有呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-6-13 05:49

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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