回复 15# afan 
对啊,我就是不在意这一点,因为很多人不在意,让程序去完成计算就是要多兼容。				
			
		回复 10# C.L 
    大哥,你真牛B,居然被你全弄对了。。。				
			
		回复 14# xsjtxy 
    谢谢,这里的目的是兼容更多的不规则的输入。				
			
		回复afan 
对啊,我就是不在意这一点,因为很多人不在意,让程序去完成计算就是要多兼容。
itljl 发表于 2010-8-11 15:36 http://www.autoitx.com/images/common/back.gif
    规则都错误何谈兼容哦,你这样做会适得其反,会令命令行操作的程序出错				
			
		...顺便给个参考
#Include <WinAPIEx.au3>
_WinAPI_CommandLineToArgv( $sCmd )
netegg 发表于 2010-8-11 04:11 http://www.autoitx.com/images/common/back.gif
    如果双引号不是成对的,这个函数貌似有问题…				
			
		回复 19# afan 
 是这样的,当用户输入一串不规则的字符,其中包含了程序全路径与参数的时候。如果我们能正确将参数分离出来。就能让程序正常执行了:)
如果分离不出来,就如您所说,无法执行了。				
			
		回复 21# itljl 
    那用户永远不知道自己错了。以后都不改正。这样存在误导吧。				
			
		回复 22# xsjtxy 
这可能就是观念问题了,那就要看你是让自己写的程序能在尽可能多的计算机,尽可能多的用户手里都能正确运行,还是让用户尽可能的适应计算机技术与规则来让程序正常运行,之间的选择了。				
			
		LZ这个软件是要用户输入字符串来运行程序吗? 类似命令行?				
			
		回复 24# afan 
是的,接受用户输入一个程序的全路径,然后运行这个程序。当用户输入有参数时,就需要准确的提取出这个参数,才能正确运行程序了。				
			
		回复 25# itljl 
    那如果用户熟悉命令行规则,在适当的位置使用双引号,那你那样识别就会出错了				
			
		回复 26# afan 
    是的,主要是遇到好些用户没有加双引号。:)你懂的。				
			
		 本帖最后由 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
				
			
		既是菜鸟,估计怎么加参数都很成问题。针对菜鸟不应该考虑使用自行输入,或者不考虑加参数				
			
		如果要兼容太多的不规则命令、不规则参数,就不是一两行代码可以实现的,我认为起码有下面的这些需要先解决:
1、先分别获取路径和参数,然后进行文件检查,如果文件不存在,则对路径加双引号再重新检查
2、如果还没有此文件,再重新按不同的规则重新获取不同组合的路径和参数,直到找到文件为止
3、如果还是没有找到此文件,刚认为输入的命令为不合格命令,并提示用户重新输入。