itljl
发表于 2010-8-11 15:36:37
回复 15# afan
对啊,我就是不在意这一点,因为很多人不在意,让程序去完成计算就是要多兼容。
itljl
发表于 2010-8-11 15:38:15
回复 10# C.L
大哥,你真牛B,居然被你全弄对了。。。
itljl
发表于 2010-8-11 15:40:18
回复 14# xsjtxy
谢谢,这里的目的是兼容更多的不规则的输入。
afan
发表于 2010-8-11 16:04:49
回复afan
对啊,我就是不在意这一点,因为很多人不在意,让程序去完成计算就是要多兼容。
itljl 发表于 2010-8-11 15:36 http://www.autoitx.com/images/common/back.gif
规则都错误何谈兼容哦,你这样做会适得其反,会令命令行操作的程序出错
afan
发表于 2010-8-11 16:19:00
...顺便给个参考
#Include <WinAPIEx.au3>
_WinAPI_CommandLineToArgv( $sCmd )
netegg 发表于 2010-8-11 04:11 http://www.autoitx.com/images/common/back.gif
如果双引号不是成对的,这个函数貌似有问题…
itljl
发表于 2010-8-11 16:45:37
回复 19# afan
是这样的,当用户输入一串不规则的字符,其中包含了程序全路径与参数的时候。如果我们能正确将参数分离出来。就能让程序正常执行了:)
如果分离不出来,就如您所说,无法执行了。
xsjtxy
发表于 2010-8-11 16:57:17
回复 21# itljl
那用户永远不知道自己错了。以后都不改正。这样存在误导吧。
itljl
发表于 2010-8-11 17:44:00
回复 22# xsjtxy
这可能就是观念问题了,那就要看你是让自己写的程序能在尽可能多的计算机,尽可能多的用户手里都能正确运行,还是让用户尽可能的适应计算机技术与规则来让程序正常运行,之间的选择了。
afan
发表于 2010-8-11 17:50:14
LZ这个软件是要用户输入字符串来运行程序吗? 类似命令行?
itljl
发表于 2010-8-11 18:00:40
回复 24# afan
是的,接受用户输入一个程序的全路径,然后运行这个程序。当用户输入有参数时,就需要准确的提取出这个参数,才能正确运行程序了。
afan
发表于 2010-8-11 18:04:32
回复 25# itljl
那如果用户熟悉命令行规则,在适当的位置使用双引号,那你那样识别就会出错了
itljl
发表于 2010-8-11 18:07:56
回复 26# afan
是的,主要是遇到好些用户没有加双引号。:)你懂的。
xsjtxy
发表于 2010-8-11 18:09:29
本帖最后由 xsjtxy 于 2010-8-11 18:21 编辑
你试试这样能获取不
10楼的代码。
$path = "c:\program Files\commend\test 123.au3 这里是参数.exe 这里是参数2.exe"
$path2 = "F:\game\tools\include\ChangDesk.exe f:\game\tools\img\ /gui"
$path3 = "C:\Program Files\Internet Explorer\IEXPLORE.EXE http://baidu.com/test"
MsgBox (0,"",$path & @CRLF& "的参数是:" & _getParam ($path) &@CRLF & _
$path2 & @CRLF & "的参数是:" &_getParam ($path2) &@CRLF & _
$path3 & @CRLF & "的参数是:" & _getParam ($path3))
Func _getParam ($str)
$var = StringRegExpReplace ($str,'\S:\\.+\\.+\.\S{3}\h(.+)','$1')
$var = StringReplace ($var," ","|")
Return $var
EndFunc
afan
发表于 2010-8-11 18:16:38
既是菜鸟,估计怎么加参数都很成问题。针对菜鸟不应该考虑使用自行输入,或者不考虑加参数
C.L
发表于 2010-8-12 03:26:36
如果要兼容太多的不规则命令、不规则参数,就不是一两行代码可以实现的,我认为起码有下面的这些需要先解决:
1、先分别获取路径和参数,然后进行文件检查,如果文件不存在,则对路径加双引号再重新检查
2、如果还没有此文件,再重新按不同的规则重新获取不同组合的路径和参数,直到找到文件为止
3、如果还是没有找到此文件,刚认为输入的命令为不合格命令,并提示用户重新输入。