opk775852123 发表于 2017-2-16 09:19:56

【已解决】}有关AUTOIT调用BAT的问题,请大神看一下问题出在哪了,求解决

本帖最后由 opk775852123 于 2017-2-19 17:22 编辑

本人小白一枚,想写个au3调用BAT的程序,BAT是现成的,并且可以正常运行,但是经au3调用就不行,下面是截图及代码。


下边是BAT的代码@Echo off&title wkdxz
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE

\Wow6432Node\Microsoft\windows\CurrentVersion\Uninstall

\2345Explorer') do (
echo %%a|findstr /i "UninstallString" >nul&&for /f "tokens=1,*

delims=:" %%b in ("%%a") do (
set "a=%%b"
set "b=%%c"
if exist "!a:~-1!:!b!" echo 正在启动卸载程序&start "" "!a:~-1!:!b!"
))
exit

229989799 发表于 2017-2-16 09:42:57

bat转换AU3代码如下:RunWait(@ComSpec & ' /c ' & '@Echo off&title wkdxz ', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'setlocal enabledelayedexpansion', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'for /f "delims=" %a in (' & "'" & _
'reg query HKEY_LOCAL_MACHINE\SOFTWARE', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & '\Wow6432Node\Microsoft\windows\CurrentVersion\Uninstall', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & '\2345Explorer' & "'" & _
') do (', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'echo %a|findstr /i "UninstallString" >nul&&for /f "tokens=1,* ', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'delims=:" %b in ("%a") do (', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'set "a=%b"', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'set "b=%c"', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'if exist "!a:~-1!:!b!" echo 正在启动卸载程序&start "" "!a:~-1!:!b!"', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & '))', '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'exit', '', @SW_HIDE)

229989799 发表于 2017-2-16 09:44:30

如果要运行bat,最好用 ShellExecute("date\1.bat")

dnvplj 发表于 2017-2-16 11:27:43

试下:
Run(@ComSpec & ' /c dir>E:\1.BAT',"", @SW_HIDE)

opk775852123 发表于 2017-2-16 12:09:07

回复 2# 229989799
谢谢大神帮忙,可是这段代码要怎样用呢?为什么我直接复制到工程里点击运行没有任何反应呢?是还需要加什么东西吗?

帆船 发表于 2017-2-16 13:13:15

回复 5# opk775852123
他的转换完全没有理解批处理代码的内容,是完全错误的。
用ShellExecute,并且要确定批处理文件在程序目录下。

bihex 发表于 2017-2-16 13:18:04

地址有问题吧

opk775852123 发表于 2017-2-16 14:01:42

本帖最后由 opk775852123 于 2017-2-16 14:04 编辑

回复 6# 帆船
用ShellExecute也不行呢

是不是需要加什么参数呢?

我就是不理解为什么会弹出find in files这个窗口
如果单独运行BAT的话就不会弹出
只要用AUT3调用就会弹,不管是在同级目录还是下级目录

229989799 发表于 2017-2-16 14:33:52

卸载2345浏览器为什么不直接调用它的“卸载“程序而使用批处理来卸载??

opk775852123 发表于 2017-2-16 15:30:49

回复 9# 229989799
因为有时候客户的2345的浏览器不一定会安装在默认目录,所以才采用此方法

229989799 发表于 2017-2-16 15:33:09

回复 10# opk775852123


   如果 批处理 能卸载,就直接批处理编译成exe吧。不用费脑处理。

opk775852123 发表于 2017-2-16 15:46:36

回复 11# 229989799
关键是把BAT文件编译成EXE的也不行一样会弹出find in files这个窗口。。。。。

1361739590 发表于 2017-2-17 09:14:57

修改批处理,第二行增加
cd %~dp0

opk775852123 发表于 2017-2-17 22:17:10

回复 13# 1361739590
请问是加在第二行哪里呢
setlocalenabledelayedexpansion cd %~dp0
cd %~dp0 setlocalenabledelayedexpansion
setlocal cd %~dp0enabledelayedexpansion
麻烦大神写一下可以吗?
能用的话小弟感激不尽

帆船 发表于 2017-2-18 11:59:58

回复 14# opk775852123
应该是另起一行为cd %~dp0吧?
页: [1] 2
查看完整版本: 【已解决】}有关AUTOIT调用BAT的问题,请大神看一下问题出在哪了,求解决