无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
123
返回列表 发新帖
楼主: liuzhaoyzz
打印 上一主题 下一主题

请问下有没有办法用批处理或者命令行小程序确定系统引导分区?

    [复制链接]
61#
发表于 2021-1-14 22:26:08 | 显示全部楼层
dos时代菜鸟 发表于 2021-1-14 22:11
你是说,
有盘符,就卸载,
没盘符,就加载?

楼主应该是写错了,应该是这样的情况
初始状态 没挂载 已挂载
参数:挂载 找一个没用的盘符挂上 返回这个盘符
参数:卸载 卸载自己挂载的盘符 啥也不动
使用场景应该是先执行挂载,然后等用户操作完,再执行卸载(

点评

那,可以做成这样的:可好, 不带任何参数,就等待确认 有参数时,参数分 挂/卸 两种 挂,判断有无盘符,无,就挂之,有,就不动。 卸,判断有无盘符,有,就卸之,无,就不动。  详情 回复 发表于 2021-1-14 22:48
回复

使用道具 举报

62#
发表于 2021-1-15 13:47:45 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-15 13:45
c:\windows\system32\bcdedit.exe是一直存在的,64位操作系统里面,32位的第三方文件管理器只能调用32位 ...

莫慌,重定向可以再重定向回来的,访问%windir%/sysnative就是原系统的system32(

点评

这个%windir%/sysnative用起来感觉比较麻烦,如果是64位的cmd环境这个%windir%/sysnative就出出错;如果32位的cmd环境这个%windir%/sysnative调用是对的;双击批处理又难以知道这个这个bat是被32位的还是64位的cmd调  详情 回复 发表于 2021-1-15 14:00
回复

使用道具 举报

63#
发表于 2021-1-15 14:05:03 | 显示全部楼层
dos时代菜鸟 发表于 2021-1-15 14:01
用你这个 32位 文件管理器,打开cmd 看下他的 ComSpec 是多少?
我们可以改下路径,到cmd 的解析路径 找 ...

cmd当然也会是32位重定向的版本((
回复

使用道具 举报

64#
发表于 2021-1-15 14:05:31 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-15 14:00
这个%windir%/sysnative用起来感觉比较麻烦,如果是64位的cmd环境这个%windir%/sysnative就出出错;如果3 ...

我的意思是可以通过检测sysnative目录的存在性来判断(

点评

哦,知道了。  发表于 2021-1-15 14:43
回复

使用道具 举报

65#
发表于 2021-1-15 14:13:56 | 显示全部楼层

看图就很明确了

wow64重定向就是让你看起来像是在真的32位环境跑

点评

但是 %programfiles% 就不一样,他总不至于 在32位下 去调用 64的程序去吧, 看这个变量,就知道了。  详情 回复 发表于 2021-1-15 14:41
回复

使用道具 举报

66#
发表于 2021-1-15 14:18:01 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-15 14:15
32位的文件管理器,很容易重现,比如你把你的批处理发给qq上面的任意一位好友,然后从qq的文件管理器里面 ...

其实主动调用 SysWoW64 里的cmd就是跑的32位的cmd了((可以通过ProcExp看到访问的相关目录全都是重定向的)
回复

使用道具 举报

67#
发表于 2021-1-15 15:03:48 | 显示全部楼层
dos时代菜鸟 发表于 2021-1-15 14:51
这里面的情况还真多。

改进了一下。

思考了以下你可以先尝试 %windir%\sysnative\bcdedit ,失败再尝试 %windir%\system32\bcdedit ,再不行就报告
应该就可以了(

点评

64位下调用 32位 cmd 可以运行 %windir%\sysnative\ 这个路径 下 的 bcdedit 。  详情 回复 发表于 2021-1-15 15:27
不是考虑64位的xp啊,是32位xp下面,运行dos时代菜鸟的批处理,显示结果却是“当前环境是64位系统下的64位环境”。 我没安装过64位的XP。  详情 回复 发表于 2021-1-15 15:06
回复

使用道具 举报

68#
发表于 2021-1-15 15:09:31 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-15 15:06
不是考虑64位的xp啊,是32位xp下面,运行dos时代菜鸟的批处理,显示结果却是“当前环境是64位系统下的6 ...

哦,也对,不过判断架构不是可以用 PROCESSOR_ARCHITECTURE 吗(
所以先检测架构,是32位再检测WoW

点评

用PROCESSOR_ARCHITECTURE来判断cmd的位数,是很多人的误解,正确的结果是用%PROCESSOR_IDENTIFIER%的前三位是否是x86来判断。否则在32位的文件浏览器(比如MDIE,比如qq文件管理器,网络管理器,以及一些32位的打包  详情 回复 发表于 2021-1-15 15:19
这是个 不错的办法,判断 位数,再看看有没有 特定 文件夹。 另外 ,在查找 文件这个问题上 ,64位上的64 和 32位上的32 都到一个地方去找文件,就是 windows\system32 也就是没有区别的。  详情 回复 发表于 2021-1-15 15:15
回复

使用道具 举报

69#
发表于 2021-1-15 15:11:33 | 显示全部楼层
dos时代菜鸟 发表于 2021-1-15 15:09
xp 下 这个 已经不重要了,因为 xp 下 根本没有 bcdedit 也就不用考虑 这个问题

不是,你这个逻辑的问题在于,纯32位的win7,8,8.1,10的ProgramFiles变量也是没x86的(
回复

使用道具 举报

70#
发表于 2021-1-15 15:17:29 | 显示全部楼层
本帖最后由 CodeHz 于 2021-1-15 15:18 编辑
dos时代菜鸟 发表于 2021-1-15 15:15
这是个 不错的办法,判断 位数,再看看有没有 特定 文件夹。

另外 ,在查找 文件这个问题上 ,64位上 ...

我认为根本不用检测,直接尝试两个路径(sysnative, system32)就好了

点评

反应一个小问题 SmartMountFirmware X64 多了一个 pdata 区段, 删了运行也正常,还省了 512 Bytes.  详情 回复 发表于 2021-1-15 15:36
回复

使用道具 举报

71#
发表于 2021-1-15 15:30:08 | 显示全部楼层
dos时代菜鸟 发表于 2021-1-15 15:27
64位下调用 32位 cmd 可以运行
%windir%\sysnative\ 这个路径 下 的 bcdedit 。

其实没必要绕一圈,可以直接按我说的方法测试两个路径下的bcdedit那个存在就用哪个

点评

确实如此, 只是 考虑 在脚本开始时,检测下 必要的 外部命令是否 存在。来确保程序运行。  详情 回复 发表于 2021-1-15 15:54
回复

使用道具 举报

72#
发表于 2021-1-15 22:02:08 | 显示全部楼层
江南一根葱 发表于 2021-1-15 21:55
mklink %temp%\cmd.exe  C:\windows\system32\cmd.exe
我使用好久了,还有个特性,就是使用这招前似乎不 ...

win7 下 mklink 需要特权(
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-3 19:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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