smooth 发表于 2014-2-7 00:47:04

请教脚本在编辑器里运行和编译成EXE之后再运行有什么区别?

请教脚本在编辑器里运行和编译成EXE之后再运行有什么区别?因为我发现,我下面的代码在编辑器里运行,SQLCMD窗口会一闪而过,不会卡死。而编译成EXE文件(或者双击AU3文件)之后运行,则会卡死在SQLCMD窗口。弄了一个晚上都不明白这是为什么?谢谢!
#include <Constants.au3>
$GUICtrlRead2 = "123456"
$foom = Run(@ComSpec & " /c (for /f ""tokens=*"" %i in ('sqlcmd -U sa -P " & $GUICtrlRead2 & " ^| find ""登录失败""') do @echo %i) ", @SystemDir, @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foom)
$Textm = StdoutRead($foom)
If StringInStr($Textm, "登录失败") Then
        MsgBox(16, "密码错误", "SQL Server数据库sa账户密码错误,请检查后重新输入!", "")
Else
    MsgBox(16, "密码错误", "SQL Server数据库sa账户密码正确!", "")
EndIf

h20040606 发表于 2014-2-7 05:56:57

用runwait试一下

hnfeng 发表于 2014-2-7 08:28:30

回复 1# smooth


    还没解决?
加个延时,然后强行关闭cmd是否可以呢

smooth 发表于 2014-2-7 09:42:57

回复 2# h20040606
编译成EXE后运行,代码会卡在run那里,改什么都没有用。可是在编辑器里运行,就没有问题,我奇怪的是这个。

smooth 发表于 2014-2-7 09:43:57

回复 3# hnfeng
我一开始也是这么想的,可是代码卡在run那里,无法往下执行,谁去结束cmd呢?

hnfeng 发表于 2014-2-7 11:43:48

貌似在 SciTE 中程序会自动关闭cmd,我试着添加 pause 居然也能关闭。编译后就不会自己关闭了。
所以要加个延时,超过延时就强行关闭

代码在另一个帖子给你了。

smooth 发表于 2014-2-7 12:34:26

回复 6# hnfeng

你的测试环境和我的不一样,现在不是退不出cmd的问题,而是进入了sqlcmd.exe(微软数据库的脚本工具,类似cmd.exe。),或者Oracle数据的sqlplus.exe环境,而导致代码根本就无法再往下执行(如果是在SciTE中就可以,不知道为什么?)。
页: [1]
查看完整版本: 请教脚本在编辑器里运行和编译成EXE之后再运行有什么区别?