无忧启动论坛

标题: 请问辨识当前的PE是32位还是64位的系统的批处理命令该怎么写? [打印本页]

作者: 有阴也有阳    时间: 2017-12-23 18:14
标题: 请问辨识当前的PE是32位还是64位的系统的批处理命令该怎么写?
        现在需要这样的一条批处理命令:

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

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

作者: 807979023    时间: 2017-12-23 18:32
一般用以下批处理判断,但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
也可以用 PROCESSOR_ARCHITECTURE 这个环境变量,用2楼的方法。
作者: 有阴也有阳    时间: 2017-12-23 19:06
807979023 发表于 2017-12-23 18:32
一般用以下批处理判断,但03pe没有变量%PROCESSOR_IDENTIFIER%,以下无效。

if /i "%PROCESSOR_IDENTIFI ...

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

谢谢你的热心答复。

作者: nttwqz    时间: 2017-12-23 19:44
本帖最后由 nttwqz 于 2017-12-23 19:45 编辑

方法一:
  1. @if not exist "%programw6432%" (call a.bat) else call b.bat
复制代码


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


方法三:
  1. @if defined processor_architew6432 (
  2.         if /i not "%processor_architew6432%"=="amd64" (call a.bat) else call b.bat
  3. ) else (
  4.         if /i not "%processor_architecture%"=="amd64" (call a.bat) else call b.bat
  5. )
复制代码


作者: lintrainwy    时间: 2017-12-23 21:33
判断 64/32位 系统&程序 正确导入64/32位DLL 批处理
作者: 永远的大象    时间: 2017-12-23 21:55
  1. 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
本帖最后由 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
有阴也有阳 发表于 2017-12-23 19:06
经测试这条批处理命令在微PE  V1.2版和微PE  V2.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
本帖最后由 quya 于 2017-12-25 12:14 编辑

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

写错了, 应该是

  1. if defined ProgramFiles(x86) (echo 这是64位系统) else (echo 这是32位系统)
复制代码



作者: 有阴也有阳    时间: 2017-12-25 11:04
nttwqz 发表于 2017-12-23 19:44
方法一:

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

这条批处理命令经在PE中验证切实可行,谢谢!!!




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3