无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5020|回复: 35

[求助] 求个判断当前系统是否是ramos的批处理

[复制链接]
发表于 2022-10-3 21:09:07 | 显示全部楼层 |阅读模式
为避免频繁修改ramos,很多软件都采用了外置方式,启动ramos后,批处理一键释放导入到系统中。
如果能开机设置个脚本,自动判断当前系统是否是ramos,如是则执行导入释放,若不是,则无动作。否则实体系统下误导入就徒增麻烦了。
 楼主| 发表于 2022-10-3 21:17:07 来自手机 | 显示全部楼层
以可用内存为判定标准似乎不太可靠,万一哪天拔了部分内存而忘了重新设置判定标准呢?
回复

使用道具 举报

发表于 2022-10-3 21:48:48 | 显示全部楼层
本帖最后由 nttwqz 于 2022-10-3 21:51 编辑

PE我一般判断当前系统盘符是否是X:,RAMOS没玩过,盘符是否是C:?执行下面命令看下返回结果

  1. fsutil fsinfo drivetype c:
复制代码


如果只是用于判断自己的RAMOS,而非通用RAMOS,那么可以修改RAMOS加个特定的文件或特定的注册表键值,这样通过判断该文件或注册表键值是否存在即可。

点评

盘符依然是C。 实体VHD和ramos系统上没差别,ramos只是把整个vhd载入内存而已  详情 回复 发表于 2022-10-3 23:12
回复

使用道具 举报

 楼主| 发表于 2022-10-3 23:12:05 | 显示全部楼层
nttwqz 发表于 2022-10-3 21:48
PE我一般判断当前系统盘符是否是X:,RAMOS没玩过,盘符是否是C:?执行下面命令看下返回结果

盘符依然是C。
实体VHD和ramos系统上没差别,ramos只是把整个vhd载入内存而已

点评

我一直想请教怎么简单的判断当前系统是不是VHD? 自己装的系统太多了,有时候有点蒙,  详情 回复 发表于 2022-10-4 08:18
回复

使用道具 举报

 楼主| 发表于 2022-10-4 01:00:39 | 显示全部楼层
本帖最后由 shuini 于 2022-10-4 01:04 编辑

两个思路。
一个是修改G4D启动菜单,即加载ramos后再执行指定的批处理,估计不好办,因为对G4D的理解也就止于启动镜像而已,其他的一无所知。
第二个是ramos启动完成后先执行一个批处理,检查vhd文件的修改时间,实体运行vhd的话,vhd的修改时间几乎时刻在跟着当前时间改变,而ramos不会,源vhd文件的修改时间不会改变。那么如果vhd的修改时间距离当前时间较久,比如五分钟秒以上,即可判断当前的系统是ramos,反之,如果vhd的修改时间和当前时间差距在数秒之内,即可判断当前启动的是实体vhd。据此,自动作出是否执行目标批处理的选择。

烦请脚本好手相助。
回复

使用道具 举报

发表于 2022-10-4 07:28:47 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2022-10-4 07:30 编辑

用 devcon 找一下 系统分区所在硬盘 的 指定设备 id ,通过驱动判断是否 为 内存盘。

diskpart 或者 vbs /wimc 等调用 系统 api ,查看 硬盘 接口和名称。

pecmd 2012 应该可以。



回复

使用道具 举报

发表于 2022-10-4 08:18:42 | 显示全部楼层
shuini 发表于 2022-10-3 23:12
盘符依然是C。
实体VHD和ramos系统上没差别,ramos只是把整个vhd载入内存而已

我一直想请教怎么简单的判断当前系统是不是VHD? 自己装的系统太多了,有时候有点蒙,

点评

bcedit /v /enum {current}  详情 回复 发表于 2022-10-4 09:02
回复

使用道具 举报

发表于 2022-10-4 08:59:47 | 显示全部楼层
虚拟盘.PNG

如图 ,用 pnputil + find 可以判断系统中有无 ram 盘。 不知道是否通用 。

通过vbs 或者 wmic 估计也可以。



点评

好像可以通过sc query fbwf查询  详情 回复 发表于 2022-10-4 10:14
回复

使用道具 举报

发表于 2022-10-4 09:02:30 | 显示全部楼层
likeyouli 发表于 2022-10-4 08:18
我一直想请教怎么简单的判断当前系统是不是VHD? 自己装的系统太多了,有时候有点蒙,

bcedit /v /enum {current}

点评

bcdedit /v /enum {current} , 谢谢大师,您的bcdedit 命令掌握的真厉害  详情 回复 发表于 2022-10-4 09:30
回复

使用道具 举报

发表于 2022-10-4 09:06:03 | 显示全部楼层
俺的RAMOS是R驱,微软方式引导的
mountvol |findstr {d9b257fc-684e-4dcb-ab79-03cfa2f6b750} ||exit
判断是RAMOS批处理就自动下载最新版软件静默安装。
回复

使用道具 举报

发表于 2022-10-4 09:30:18 | 显示全部楼层
szwp 发表于 2022-10-4 09:02
bcedit /v /enum {current}
bcdedit /v /enum {current} , 谢谢大师,您的bcdedit 命令掌握的真厉害
1.png

点评

你要是熟悉diskpart的话,也可试用它来玩。  详情 回复 发表于 2022-10-4 14:59
回复

使用道具 举报

发表于 2022-10-4 10:14:44 来自手机 | 显示全部楼层
dos时代菜鸟 发表于 2022-10-4 08:59
如图 ,用 pnputil + find 可以判断系统中有无 ram 盘。 不知道是否通用 。

通过vbs 或者 wmic 估计 ...

好像可以通过sc query fbwf查询
回复

使用道具 举报

 楼主| 发表于 2022-10-4 11:02:01 | 显示全部楼层
成功了。
早上用vhd修改时间的方法试了一下,复杂,且动一次vhd,就得修改一次时间参数,不方便。
于是想是不是用获取加载的BCD注册表信息来判断,实体VHD加载的是外部BCD,ramos则是加载的内部BCD,信息不同的地方很多,容易判断。
刚想着,就看到了szwp朋友的两个回帖,直接了当用bcdedit命令获取了c盘标识符,结合他的句式“mountvol |findstr {d9b257fc-684e-4dcb-ab79-03cfa2f6b750} ||exit”,改了一下,脚本如下:

@echo off
if not "%1"=="wind" mshta vbscript:createobject("wscript.shell").run("""%~f0"" wind",vbhide)(window.close)&&exit
bcdedit /v /enum {current} |findstr {dc2f993e-42b7-11ed-b018-bc5ff4b8c93d} ||exit
start D:\SOFT\RAMSOFT\MyScripts\安装.bat

感谢szwp和各位参与讨论的朋友。
回复

使用道具 举报

 楼主| 发表于 2022-10-4 11:15:12 | 显示全部楼层
另外一个办法似乎也值得讨论一下,即g4d在把vhd载入内存后再载入一个小vhd,三五兆足够,里面就一个批处理,系统启动后指向并执行它。进实体vhd时虽然也会执行这个动作,但系统是找不到执行文件的,所以是无效的。
这方法的优点是不用在重新制作系统后修改脚本,可以一直用,而且不同ramos之间通用。

点评

这方法也成功了。先是做了个10M的小vhd,然后g4d的菜单上启动项目上第一行添加了一句 map --mem(hd0,0)/IMG/000.vhd (hd2) 启动载入成功,但是是脱机的,需要手动联机后才有盘符,没有盘符这路径不知道怎么写了。  详情 回复 发表于 2022-10-4 13:24
回复

使用道具 举报

发表于 2022-10-4 12:02:51 来自手机 | 显示全部楼层
除了vhd还可wim方式ramos, 只要是ramdisk方式id通用
回复

使用道具 举报

发表于 2022-10-4 13:01:44 | 显示全部楼层
我也想知道,看看大神们的解答啊
回复

使用道具 举报

 楼主| 发表于 2022-10-4 13:24:10 | 显示全部楼层
shuini 发表于 2022-10-4 11:15
另外一个办法似乎也值得讨论一下,即g4d在把vhd载入内存后再载入一个小vhd,三五兆足够,里面就一个批处理 ...

这方法也成功了。先是做了个10M的小vhd,然后g4d的菜单上启动项目上第一行添加了一句
map --mem(hd0,0)/IMG/000.vhd (hd2)
启动载入成功,但是是脱机的,需要手动联机后才有盘符,没有盘符这路径不知道怎么写了。。。

接着换做了个iso,数据格式,才几十K。添加
map --mem(hd0,0)/IMG/000.iso (0xff)
启动后正常显示。
回复

使用道具 举报

 楼主| 发表于 2022-10-4 13:28:13 | 显示全部楼层
嫌资源管理器上有个光驱碍眼,可以预先修改注册表隐藏它
回复

使用道具 举报

发表于 2022-10-4 14:27:57 | 显示全部楼层
各种方式的RAMOS都有其通用特征可以提取。俺建VHD的BCD是将VHD创建时间作为GUID加入的,不管在legacy还是UEFI,ID不会变,也不会重复创建引导项。
回复

使用道具 举报

发表于 2022-10-4 14:59:43 | 显示全部楼层
likeyouli 发表于 2022-10-4 09:30
bcdedit /v /enum {current} , 谢谢大师,您的bcdedit 命令掌握的真厉害

你要是熟悉diskpart的话,也可试用它来玩。
回复

使用道具 举报

发表于 2022-11-28 17:30:55 | 显示全部楼层
自己制作的RAMOS肯定知道计算机名或是在某根目录下放一个标识性的文件。 然后用BAT判断 计算机名字 或是某文件是否存在,不就可以知道是不是RAMOS了吗。

点评

这方法只适合ramos和真实系统非同一VHD的情况  发表于 2022-11-29 12:57
回复

使用道具 举报

发表于 2022-11-29 11:20:16 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2022-11-29 11:21 编辑

pecmd 获取当前系统盘 所在硬盘的总线接口 和驱动id .

grub 虚拟盘

sshot-1.png

pe x:盘

sshot-2.png

vhd虚拟盘

sshot-3.png

正常系统盘

sshot-4.png

  1. envi drvx=%SystemDrive%
  2. envi &bustype=BusTypeUnknown,BusTypeScsi,BusTypeAtapi,BusTypeAta,BusType1394,BusTypeSsa,BusTypeFibre,BusTypeUsb,BusTypeRAID,BusTypeiScsi,BusTypeSas,BusTypeSata,BusTypeSd,BusTypeMmc,BusTypeVirtual,BusTypeFileBackedVirtual,BusTypeSpaces,BusTypeNvme,BusTypeSCM,BusTypeUfs,BusTypeMax

  3. part -raw list drv  %drvx%,drv_info
  4. mstr disk,part,bus=<1><2><-3>%drv_info%

  5. part -devid list disk %disk%,disk_info
  6. mstr diskid=<-1>%disk_info%

  7. ifex '%diskid%'='',envi diskid=%drvx%

  8. envi n=0
  9. forx *NL:, &bustype,typex,
  10. {
  11.         ifex #%n%=%bus%,envi bus=%typex%
  12.         calc n=%n%+1
  13. }

  14. mess  总线=[%bus%]\nDevID=[%diskid%]
复制代码




点评

也是一种方法,感谢。  详情 回复 发表于 2022-11-29 12:55
回复

使用道具 举报

 楼主| 发表于 2022-11-29 12:55:01 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-29 11:20
pecmd 获取当前系统盘 所在硬盘的总线接口 和驱动id .

grub 虚拟盘

也是一种方法,感谢。
回复

使用道具 举报

发表于 2022-11-29 16:56:50 | 显示全部楼层
1
回复

使用道具 举报

发表于 2022-11-29 17:19:21 | 显示全部楼层
本帖最后由 eyf 于 2022-11-29 17:22 编辑

如果是自用的RAMOS,制作RAMOS前,在根目录中放个文件做标记,批处理判断有这个文件就是RAMOS了,可以释放了!实体系统别放这个文件哦!
回复

使用道具 举报

发表于 2023-11-28 21:16:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2024-4-6 23:32:44 | 显示全部楼层
学习学习
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-18 11:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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