有阴也有阳 发表于 2017-12-23 18:14:13

请问辨识当前的PE是32位还是64位的系统的批处理命令该怎么写?

      现在需要这样的一条批处理命令:

      假如当前的PE的系统是32位的,就执行A.bat;如果当前的PE的系统是64位的,就执行B.bat。

      这样的一条批处理命令该如何写?谢谢!!!

807979023 发表于 2017-12-23 18:32:22

一般用以下批处理判断,但03pe没有变量%PROCESSOR_IDENTIFIER%,以下无效。

if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "x86" (
   call a.bat
)
if /i "%PROCESSOR_IDENTIFIER:~5,2%" == "64" (
   call b.bat
)

不知 发表于 2017-12-23 18:39:10

也可以用 PROCESSOR_ARCHITECTURE 这个环境变量,用2楼的方法。

有阴也有阳 发表于 2017-12-23 19:06:23

807979023 发表于 2017-12-23 18:32
一般用以下批处理判断,但03pe没有变量%PROCESSOR_IDENTIFIER%,以下无效。

if /i "%PROCESSOR_IDENTIFI ...

      经测试这条批处理命令在微PEV1.2版和微PEV2.0版上都不能够执行,不知问题出在哪儿了,

谢谢你的热心答复。

nttwqz 发表于 2017-12-23 19:44:07

本帖最后由 nttwqz 于 2017-12-23 19:45 编辑

方法一:
@if not exist "%programw6432%" (call a.bat) else call b.bat

方法二:
@if not exist "%windir%\syswow64\\" (call a.bat) else call b.bat

方法三:
@if defined processor_architew6432 (
        if /i not "%processor_architew6432%"=="amd64" (call a.bat) else call b.bat
) else (
        if /i not "%processor_architecture%"=="amd64" (call a.bat) else call b.bat
)

lintrainwy 发表于 2017-12-23 21:33:28

判断 64/32位 系统&程序 正确导入64/32位DLL 批处理

永远的大象 发表于 2017-12-23 21:55:55

echo.%PROCESSOR_ARCHITECTURE%|find "64">nul && call B.bat || call A.bat
试试这个,从变量%PROCESSOR_ARCHITECTURE%搜索字符“64”,成功则运行 B.bat ,失败则运行 A.bat

tools241 发表于 2017-12-24 11:40:24

本帖最后由 tools241 于 2017-12-24 11:48 编辑

法一.
if not "%ProgramFiles(x86)%"=="%SystemDrive%\Program Files (x86)" CALL A.BAT
if       "%ProgramFiles(x86)%"=="%SystemDrive%\Program Files (x86)" CALL B.BAT

法二.
if not exist "%SystemRoot%\SysWow64" CALL A.BAT
if       exist "%SystemRoot%\SysWow64" CALL B.BAT

807979023 发表于 2017-12-24 15:46:44

有阴也有阳 发表于 2017-12-23 19:06
经测试这条批处理命令在微PEV1.2版和微PEV2.0版上都不能够执行,不知问题出在哪儿了,

谢 ...

2楼的方法我这里除03pe外是能运行的。

5楼8楼的方法更好:

@if /i not "%processor_architecture%"=="amd64" (call a.bat) else call b.bat

@if not exist "%windir%\syswow64" (call a.bat) else call b.bat

quya 发表于 2017-12-24 20:44:58

本帖最后由 quya 于 2017-12-25 12:14 编辑

if defined %ProgramFiles(x86)% echo "这是64位系统" else echo "这是32位系统"

写错了, 应该是

if defined ProgramFiles(x86) (echo 这是64位系统) else (echo 这是32位系统)

有阴也有阳 发表于 2017-12-25 11:04:33

nttwqz 发表于 2017-12-23 19:44
方法一:




@if not exist "%programw6432%" (call a.bat) else call b.bat

这条批处理命令经在PE中验证切实可行,谢谢!!!
页: [1]
查看完整版本: 请问辨识当前的PE是32位还是64位的系统的批处理命令该怎么写?