无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: gbzxssx

[求助] ATI 32位 64位自动选择问题

[复制链接]
发表于 2019-9-11 19:27:48 | 显示全部楼层 |阅读模式
本帖最后由 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 不是内部命令或外部命令,如图,但会继续运行,且结果正确,是啥原因?应该如何修改? IMG_20190911_191657.jpg
发表于 2019-9-11 20:23:42 | 显示全部楼层
下个mshta放在当前目录

点评

mshta.exe放在system32文件夹中只闪一下,如果这个批命令在WIN10 32位或64位环境下,运行没问题,但在WIN10 PE环境下就有这问题,  详情 回复 发表于 2019-9-11 20:39
回复

使用道具 举报

 楼主| 发表于 2019-9-11 20:39:41 | 显示全部楼层
zlq_hysy 发表于 2019-9-11 20:23
下个mshta放在当前目录


mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行没问题,但在WIN10 PE环境下就有这问题,

点评

PE下缺这少那的,不能运行可以理解  详情 回复 发表于 2019-9-11 20:57
回复

使用道具 举报

发表于 2019-9-11 20:57:34 | 显示全部楼层
gbzxssx 发表于 2019-9-11 20:39
mshta.exe放在system32文件夹中只闪一下,没有运行ATI。如果这个批命令在WIN10 32位或64位环境下,运行 ...

PE下缺这少那的,不能运行可以理解

点评

我已说了,有mshta.exe,也不能正确运行,应该是缺一组文件,但奇怪的是,有mshta.exe,不能运行,只闪一下,没mshta.exe,只显示mshta不是内部或外部命令,但有正确结果。我查了一下64位的WIN10在syswow64文件夹中  详情 回复 发表于 2019-9-11 21:23
回复

使用道具 举报

 楼主| 发表于 2019-9-11 21:23:00 | 显示全部楼层
本帖最后由 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:05 | 显示全部楼层
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。

点评

mshta.exe之后,手动运行mshta.exe,窗口闪一下,没报错,看来是执行mshta.exe之后,不往下运行才会这样。导致没mshta.exe文件虽报错,但继续运行。  详情 回复 发表于 2019-9-12 09:39
对,我试一下  详情 回复 发表于 2019-9-12 09:21
回复

使用道具 举报

发表于 2019-9-12 08:33:25 | 显示全部楼层
精减代码
  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
复制代码

点评

按这个代码,肯定也会,因为他出错在mshta  详情 回复 发表于 2019-9-12 09:47
回复

使用道具 举报

 楼主| 发表于 2019-9-12 09:21:06 | 显示全部楼层
红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。

对,我试一下
回复

使用道具 举报

发表于 2019-9-12 09:22:41 | 显示全部楼层
为什么不用pecmd来判断?

点评

我是放在FBA文件外面,修改更方便,如果没办法就只能用PECMD判断了  详情 回复 发表于 2019-9-12 09:35
回复

使用道具 举报

 楼主| 发表于 2019-9-12 09:35:33 | 显示全部楼层
bhdc 发表于 2019-9-12 09:22
为什么不用pecmd来判断?

我是放在FBA文件外面,修改更方便,如果没办法就只能用PECMD判断了
回复

使用道具 举报

 楼主| 发表于 2019-9-12 09:39:08 | 显示全部楼层
本帖最后由 gbzxssx 于 2019-9-12 09:41 编辑
红毛樱木 发表于 2019-9-12 00:17
变通一下呗。
补上mshta.exe之后,cmd里的手动运行mshta.exe,看看报错什么。


补上mshta.exe之后,手动运行mshta.exe,窗口闪一下,没报错,看来是执行mshta.exe之后,不往下运行才会这样。导致没mshta.exe文件虽报错,但继续运行。
回复

使用道具 举报

 楼主| 发表于 2019-9-12 09:47:43 | 显示全部楼层

按这个代码,肯定也会,因为他出错在mshta
回复

使用道具 举报

发表于 2019-9-12 10:40:28 | 显示全部楼层
简单版:
@echo off
PUSHD %~dp0
if exist %windir%\SysWOW64 (
Start ATIx64.exe
)else (
Start ATIx86.exe
)

点评

斗精简,有意思!我再来一个!  发表于 2019-9-12 12:21
试过你的代码,窗口闪二下就执行ATI,并且没留CMD窗口,效果还不错,谢了  详情 回复 发表于 2019-9-12 12:03
回复

使用道具 举报

发表于 2019-9-12 10:45:27 | 显示全部楼层
本帖最后由 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,右键以管理员身份运行即可!

点评

你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了  详情 回复 发表于 2019-9-12 11:50
回复

使用道具 举报

 楼主| 发表于 2019-9-12 11:50:08 | 显示全部楼层
ku588 发表于 2019-9-12 10:45
应该是PE下mshta组件不全,PE下执行,批处理代码没必要加管理员身份运行代码,
把这段代码:
mshta vbscr ...

你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了

点评

改成这样就行了: cmd.exe /c start ATIx86.exe  详情 回复 发表于 2019-9-12 11:59
回复

使用道具 举报

发表于 2019-9-12 11:59:48 | 显示全部楼层
gbzxssx 发表于 2019-9-12 11:50
你谁去掉的代码是要让窗口隐藏执行的,去掉看得到窗口了


改成这样就行了:
cmd.exe /c start ATIx86.exe
cmd.exe /c start ATIx64.exe

点评

谢谢指导  详情 回复 发表于 2019-9-12 12:04
回复

使用道具 举报

 楼主| 发表于 2019-9-12 12:03:01 | 显示全部楼层
yigeren 发表于 2019-9-12 10:40
简单版:
@echo off
PUSHD %~dp0


试过你的代码,窗口闪二下ATI就启动了,并且没留CMD窗口,效果还不错,谢了
回复

使用道具 举报

 楼主| 发表于 2019-9-12 12:04:57 | 显示全部楼层
本帖最后由 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的代码跟简单
回复

使用道具 举报

发表于 2019-9-12 12:21:41 | 显示全部楼层
精简批处理
  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"
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表