oldbie 发表于 2008-11-13 15:35:06

关于用AUTOIT删除解压出来的文件目录的问题,知道的请进。

我做了一个SQL2000 SP4补丁的自动安装脚本,因为要刻盘所以SP4补丁是压缩包,我选择解压出来运行,但希望安装完毕后把我解压出来的文件删除掉,但是加了删除的脚本,每次都不会执行我的删除代码,请问有没有人知道是怎么回事呀?下面是我的代码。最后面“If FileExists("C:\SQL2KSP4) Then
    DirRemove("C:\SQL2KSP4", 1)
EndIf “这段代码使终不会执行,文件夹是存在的,但是就是不会给我删除掉,如果是单独把这段代码写成一个文件又能删除掉。

TrayTip("","正在进行Microsoft SQL Server2000 SP4补丁的安装,请勿对键盘及鼠标进行操作直到安装结束!",6,1)
       
Sleep(4000)

If FileExists("c:\SQL2KSP4")=1 Then
    DirRemove("c:\SQL2KSP4", 1)
EndIf

run("..\software\SQL2KSP4.exe")

WinWait(" - InstallShield Wizard","将文件保存到文件夹")
If Not WinActivate(" - InstallShield Wizard","将文件保存到文件夹") Then
        WinActivate(" - InstallShield Wizard","将文件保存到文件夹")
winwaitactive(" - InstallShield Wizard","将文件保存到文件夹")
EndIf

ControlSetText(" - InstallShield Wizard","将文件保存到文件夹","Edit1","C:\SQL2KSP4")

Sleep(500)

ControlClick(" - InstallShield Wizard", "", "Button3")


IF WinWaitActive("覆盖保护","全部覆盖",1)=1 Then
       
        ControlClick("覆盖保护", "", "Button4")
EndIf

WinWait(" - InstallShield Wizard","InstallShield Wizard 已完成在计算机中安装 ")
If Not WinActivate(" - InstallShield Wizard","InstallShield Wizard 已完成在计算机中安装 ") Then
        WinActivate(" - InstallShield Wizard","InstallShield Wizard 已完成在计算机中安装 ")
winwaitactive(" - InstallShield Wizard","InstallShield Wizard 已完成在计算机中安装 ")
EndIf
ControlClick(" - InstallShield Wizard", "", "Button4")

run("c:\SQL2KSP4\x86\setup\setupsql.exe")

WinWait("欢迎","安装向导允许您升级 SQL Server 2000 的现有实例")
If Not WinActivate("欢迎","安装向导允许您升级 SQL Server 2000 的现有实例") Then
        WinActivate("欢迎","安装向导允许您升级 SQL Server 2000 的现有实例")
winwaitactive("欢迎","安装向导允许您升级 SQL Server 2000 的现有实例")
EndIf
    ;等待窗体"欢迎","安装向导允许您升级 SQL Server 2000 的现有实例"出现

ControlClick("欢迎", "", "Button1")

WinWait("软件许可证协议","阅读协议的其它部分")
If Not WinActivate("软件许可证协议","阅读协议的其它部分") Then
        WinActivate("软件许可证协议","阅读协议的其它部分")
WinWaitActive("软件许可证协议","阅读协议的其它部分")
EndIf
ControlClick("软件许可证协议", "", "Button2")

WinWait("实例名","新名称必须不超过 16 个字符")
If Not WinActivate("实例名","新名称必须不超过 16 个字符") Then
        WinActivate("实例名","新名称必须不超过 16 个字符")
WinWaitActive("实例名","新名称必须不超过 16 个字符")
EndIf

ControlClick("实例名", "", "Button3")

WinWait("连接到服务器","身份验证模式")
If Not WinActivate("连接到服务器","身份验证模式") Then
        WinActivate("连接到服务器","身份验证模式")
WinWaitActive("连接到服务器","身份验证模式")
EndIf

ControlClick("连接到服务器", "", "Button1")

WinWait("SA 密码警告","即便已使用 Windows 身份验证")
If Not WinActivate("SA 密码警告","即便已使用 Windows 身份验证") Then
        WinActivate("SA 密码警告","即便已使用 Windows 身份验证")
WinWaitActive("SA 密码警告","即便已使用 Windows 身份验证")
EndIf

ControlClick("SA 密码警告", "", "Button2")

Sleep(500)

ControlClick("SA 密码警告", "", "Button3")


IF WinWaitActive("SQL Server 2000 Service Pack 4 安装程序","对所有数据库启用跨数据库的所有权链接",1)=1 then

ControlClick("SQL Server 2000 Service Pack 4 安装程序", "", "Button2")

Sleep(500)

ControlClick("SQL Server 2000 Service Pack 4 安装程序", "", "Button5")

EndIf

WinWait("错误报告","确定")
If Not WinActivate("错误报告","确定") Then
        WinActivate("错误报告","确定")
WinWaitActive("错误报告","确定")
EndIf

ControlClick("错误报告", "", "Button1")

WinWait("开始复制文件","请单击“下一步”开始复制文件")
If Not WinActivate("开始复制文件","请单击“下一步”开始复制文件") Then
        WinActivate("开始复制文件","请单击“下一步”开始复制文件")
WinWaitActive("开始复制文件","请单击“下一步”开始复制文件")
EndIf

ControlClick("开始复制文件", "", "Button1")

WinWait("安装","确定")
If Not WinActivate("安装","确定") Then
        WinActivate("安装","确定")
WinWaitActive("安装","确定")
EndIf

ControlClick("安装", "", "Button1")

WinWait("安装完毕","完成")
If Not WinActivate("安装完毕","完成") Then
        WinActivate("安装完毕","完成")
WinWaitActive("安装完毕","完成")
EndIf

ControlClick("安装完毕", "", "Button4")

Sleep(2000)

If FileExists("C:\SQL2KSP4) Then
    DirRemove("C:\SQL2KSP4", 1)
EndIf

TrayTip("","Microsoft SQL Server2000 SP4补丁已经安装完毕!现在可以进行其他的操作了",5,1)
sleep(5000)

rho123 发表于 2008-11-13 15:41:43

你手动能删掉么?

oldbie 发表于 2008-11-13 16:15:38

手动是肯定能删除的,而且把删除代码单独出来运行也是能删除,就是放在这整个脚本的后面貌似就没有起作用了。

liongodmien 发表于 2008-11-16 15:55:17

原帖由 oldbie 于 2008-11-13 16:15 发表 http://www.autoitx.com/images/common/back.gif
手动是肯定能删除的,而且把删除代码单独出来运行也是能删除,就是放在这整个脚本的后面貌似就没有起作用了。
在删除前的延时长一点或监察某个进程结束后进行删除

shijincun 发表于 2008-11-16 17:11:05

ProcessWaitClose("SETUP")
等待进程完成再进行下面操作

yellow881 发表于 2008-12-3 05:35:25

前面两位的正解
页: [1]
查看完整版本: 关于用AUTOIT删除解压出来的文件目录的问题,知道的请进。