|
单文件执行文件的制作过程中常常会涉及到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=具体的名称。具体情况可变通使用上述方法。我啰嗦了。 |
|