无忧启动论坛

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

[分享] 单文件制作中32、64位判别批处理的四步进化

    [复制链接]
跳转到指定楼层
1#
发表于 2016-5-4 10:27:47 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
单文件执行文件的制作过程中常常会涉及到32位、64位判别批处理,通常你会看到下面这个版本:
@echo off
color 0a
if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "x86" goto x86
Dism++\Dism++x64.exe
exit
:x86
Dism++\Dism++x86.exe
exit

上面这种代码如果碰到路径长的情况,会显得啰嗦。其实可以设置环境变量来避免:
@echo off
color 0a
set bits=x86
if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "x86" goto x86
set bits=x64
:x86
Dism++\Dism++%bits%.exe
set bits=
exit

上面两种代码都用到了跳转,其实也可以避免(关键代码仅四行!):
@echo off
color 0a
set bits=x64
if "%PROCESSOR_IDENTIFIER:~0,3%"=="x86" set bits=x86
Dism++\Dism++%bits%.exe
set bits=
exit

上面两种代码用了两次set bits,可以简化到一次(关键代码仅三行!):
@echo off
color 0a
set bits=%PROCESSOR_IDENTIFIER:~0,3%
Dism++\Dism++%bits%.exe
set bits=
exit

其实,不用判别、不用另设set bits,也可以实现,下面是终极模式(关键代码仅一行!):
@echo off
color 0a
Dism++\Dism++%PROCESSOR_IDENTIFIER:~0,3%.exe
exit

还有两点需要说明,一是上面的路径是相对路径,也可以采用绝对路径,如D:\Tools\Dism++\Dism++%PROCESSOR_IDENTIFIER:~0,3%.exe。二是有的软件32位、64位软件分目录存储,这时可以用环境变量作目录名,如果目录名是x86和x64,可以直接用%PROCESSOR_IDENTIFIER:~0,3%作目录名,例如backup\%PROCESSOR_IDENTIFIER:~0,3%\imagex.exe;如果目录名是86和64或32和64或其它情况,都可以用到if判别位数和设set bits=具体的名称。具体情况可变通使用上述方法。我啰嗦了。
2#
 楼主| 发表于 2016-5-4 12:19:06 | 显示全部楼层
%PROCESSOR_IDENTIFIER:~0,3%的值随系统的位别而异=x86|x64

点评

你可以在CMD中看一下X64 显示是AMD64  详情 回复 发表于 2016-5-4 17:28
回复

使用道具 举报

3#
 楼主| 发表于 2017-12-25 17:26:33 | 显示全部楼层
wynew8au 发表于 2017-12-25 11:16
我也来一个CMD判断系统位数

你这是用了小程序了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 02:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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