无忧启动论坛

标题: ATI 32位 64位自动选择问题 [打印本页]

作者: gbzxssx    时间: 2019-9-11 19:27
标题: 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 不是内部命令或外部命令,如图,但会继续运行,且结果正确,是啥原因?应该如何修改?
作者: zlq_hysy    时间: 2019-9-11 20:23
下个mshta放在当前目录
作者: gbzxssx    时间: 2019-9-11 20:39
zlq_hysy 发表于 2019-9-11 20:23
下个mshta放在当前目录


mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行没问题,但在WIN10 PE环境下就有这问题,
作者: zlq_hysy    时间: 2019-9-11 20:57
gbzxssx 发表于 2019-9-11 20:39
mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行 ...

PE下缺这少那的,不能运行可以理解
作者: gbzxssx    时间: 2019-9-11 21:23
本帖最后由 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环境下就有这问题,

作者: 红毛樱木    时间: 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。
作者: chishingchan    时间: 2019-9-12 08:33
精减代码
  1. @if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b

  2. if %PROCESSOR_ARCHITECTURE%==x86 goto x86
  3. if %PROCESSOR_ARCHITECTURE%==AMD64 goto AMD64
  4. exit

  5. :x86
  6. cmd.exe /c ATIx86.exe
  7. exit

  8. :AMD64
  9. cmd.exe /c ATIx64.exe
  10. exit
复制代码

作者: gbzxssx    时间: 2019-9-12 09:21
红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。

对,我试一下
作者: bhdc    时间: 2019-9-12 09:22
为什么不用pecmd来判断?
作者: gbzxssx    时间: 2019-9-12 09:35
bhdc 发表于 2019-9-12 09:22
为什么不用pecmd来判断?

我是放在FBA文件外面,修改更方便,如果没办法就只能用PECMD判断了
作者: gbzxssx    时间: 2019-9-12 09:39
本帖最后由 gbzxssx 于 2019-9-12 09:41 编辑
红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。


补上mshta.exe之后,手动运行mshta.exe,窗口闪一下,没报错,看来是执行mshta.exe之后,不往下运行才会这样。导致没mshta.exe文件虽报错,但继续运行。
作者: gbzxssx    时间: 2019-9-12 09:47
chishingchan 发表于 2019-9-12 08:33
精减代码

按这个代码,肯定也会,因为他出错在mshta
作者: yigeren    时间: 2019-9-12 10:40
简单版:
@echo off
PUSHD %~dp0
if exist %windir%\SysWOW64 (
Start ATIx64.exe
)else (
Start ATIx86.exe
)
作者: ku588    时间: 2019-9-12 10:45
本帖最后由 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,右键以管理员身份运行即可!
作者: gbzxssx    时间: 2019-9-12 11:50
ku588 发表于 2019-9-12 10:45
应该是PE下mshta组件不全,PE下执行,批处理代码没必要加管理员身份运行代码,
把这段代码:
mshta vbscr ...

你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了
作者: ku588    时间: 2019-9-12 11:59
gbzxssx 发表于 2019-9-12 11:50
你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了


改成这样就行了:
cmd.exe /c start ATIx86.exe
cmd.exe /c start ATIx64.exe
作者: gbzxssx    时间: 2019-9-12 12:03
yigeren 发表于 2019-9-12 10:40
简单版:
@echo off
PUSHD %~dp0


试过你的代码,窗口闪二下ATI就启动了,并且没留CMD窗口,效果还不错,谢了
作者: gbzxssx    时间: 2019-9-12 12:04
本帖最后由 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的代码跟简单
作者: chishingchan    时间: 2019-9-12 12:21
精简批处理
  1. @if not "%1"=="h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h %*",0)(window.close)&exit /b
  2. if %PROCESSOR_ARCHITECTURE%==x86 "%~dp0ATIx86.exe"
  3. if %PROCESSOR_ARCHITECTURE%==AMD64 "%~dp0ATIx64.exe"
复制代码





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