ATI 32位 64位自动选择问题
本帖最后由 gbzxssx 于 2019-9-11 19:29 编辑@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
if %PROCESSOR_ARCHITECTURE%==x86 goto x86
if %PROCESSOR_ARCHITECTURE%==AMD64 goto AMD64
goto error
:error
echo "不支持此操作系统平台"
goto end
:x86
cmd.exe /c ATIx86.exe
goto end
:AMD64
cmd.exe /c ATIx64.exe
goto end
:end
exit
运行后,会出现mshta 不是内部命令或外部命令,如图,但会继续运行,且结果正确,是啥原因?应该如何修改? 下个mshta放在当前目录 zlq_hysy 发表于 2019-9-11 20:23
下个mshta放在当前目录
mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行没问题,但在WIN10 PE环境下就有这问题, gbzxssx 发表于 2019-9-11 20:39
mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行 ...
PE下缺这少那的,不能运行可以理解 本帖最后由 gbzxssx 于 2019-9-11 21:24 编辑
zlq_hysy 发表于 2019-9-11 20:57
PE下缺这少那的,不能运行可以理解
我已说了,有mshta.exe,也不能正确运行,应该是缺一组文件,但奇怪的是,有mshta.exe,不能运行,只闪一下,没mshta.exe,只显示mshta不是内部或外部命令,但有正确结果。我查了一下64位的WIN10在syswow64文件夹中有个mshta.exe,大小13K,system32文件夹中有个mshta.exe,大小15K。在32位WIN10的system32中有个mshta.exe,大小13K。
注意:在WIN10 32位或64位环境下,运行没问题,但在WIN10 PE环境下就有这问题,
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。 精减代码
@if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b
if %PROCESSOR_ARCHITECTURE%==x86 goto x86
if %PROCESSOR_ARCHITECTURE%==AMD64 goto AMD64
exit
:x86
cmd.exe /c ATIx86.exe
exit
:AMD64
cmd.exe /c ATIx64.exe
exit 红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。
对,我试一下 为什么不用pecmd来判断? bhdc 发表于 2019-9-12 09:22
为什么不用pecmd来判断?
我是放在FBA文件外面,修改更方便,如果没办法就只能用PECMD判断了 本帖最后由 gbzxssx 于 2019-9-12 09:41 编辑
红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。
补上mshta.exe之后,手动运行mshta.exe,窗口闪一下,没报错,看来是执行mshta.exe之后,不往下运行才会这样。导致没mshta.exe文件虽报错,但继续运行。 chishingchan 发表于 2019-9-12 08:33
精减代码
按这个代码,肯定也会,因为他出错在mshta 简单版:
@echo off
PUSHD %~dp0
if exist %windir%\SysWOW64 (
Start ATIx64.exe
)else (
Start ATIx86.exe
) 本帖最后由 ku588 于 2019-9-12 11:09 编辑
应该是PE下mshta组件不全,PE下执行,批处理代码没必要加管理员身份运行代码,
把这段代码:
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
去掉就行,或者@echo off下面加上cd /d %~dp0,右键以管理员身份运行即可! ku588 发表于 2019-9-12 10:45
应该是PE下mshta组件不全,PE下执行,批处理代码没必要加管理员身份运行代码,
把这段代码:
mshta vbscr ...
你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了 gbzxssx 发表于 2019-9-12 11:50
你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了
改成这样就行了:
cmd.exe /c start ATIx86.exe
cmd.exe /c start ATIx64.exe yigeren 发表于 2019-9-12 10:40
简单版:
@echo off
PUSHD %~dp0
试过你的代码,窗口闪二下ATI就启动了,并且没留CMD窗口,效果还不错,谢了 本帖最后由 gbzxssx 于 2019-9-12 12:06 编辑
ku588 发表于 2019-9-12 11:59
改成这样就行了:
cmd.exe /c start ATIx86.exe
cmd.exe /c start ATIx64.exe
谢谢指导,用yigeren的代码跟简单 精简批处理
@if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b
if %PROCESSOR_ARCHITECTURE%==x86 "%~dp0ATIx86.exe"
if %PROCESSOR_ARCHITECTURE%==AMD64 "%~dp0ATIx64.exe"
页:
[1]