2015-10-05 44 views
0

我要创造我自己的命令行命令行(如Windows应用程序,不提示) 例:-f {filepath} -d {filename}在TextBox1中vb.net参数/应用

-f C://Windows/Users/Myname/Documents -d junk.exe 

所以它必须过滤路径和文件名 所以它变成这样my.computer.filesystem.delete("C://Windows/Users/Myname/Documents", "junk.exe")

谢谢!

回答

0

您可以使用此功能得到您想要的参数值(参数名称必须包括“ - ”符号。)

Public Function GetParameter(input As String, param As String) As String 
    Dim cmdargs As New List(Of String) 
    For Each item As Match In Regex.Matches(input, """(\\""|[^""])*?""|[^ ]+") 
     If item.ToString()(0) = """" And item.ToString()(item.ToString.Length - 1) = """" Then 
      cmdargs.Add(item.ToString().Remove(0, 1).Remove(item.ToString.Length - 2, 1)) 
     Else 
      cmdargs.Add(item.ToString()) 
     End If 
    Next 
    Return cmdargs(cmdargs.ToList().LastIndexOf(param) + 1) 
End Function 

如果使用此功能GetParameter("-f")和您的命令行参数是 -f C://Windows/Users/Myname/Documents -d junk.exe那么你会得到C://Windows/Users/Myname/Documents作为输出。现在,如果你的命令行有一个空格,你可以用双引号括起来,以避免它被解释为'多个参数'。

现在,在事件处理方法(可能是点击按钮),你可以使用: -

My.Computer.FileSystem.Delete(GetParameter(TextBox1.Text, "-f"), GetParameter(TextBox1.Text, "-d")) 

...来完成这项工作。希望能帮助到你 :-)。如果您有任何疑问,请在下面评论。 已更新

+0

谢谢你!但是命令行是在textbox1.text中,而不是在cmd提示符下。我如何编码它,以获得它的文本框? –

+0

然后看我的更新回答 –

+0

我看不到你所做的修改?对不起,我真的帮助你和其他人。我不擅长编码,这就是为什么我使用vb.net。当我在textbox1中输入''-d hello'',我点击button1'MsgBox(GetParameter(“ - d”))''它给了'C:\ Users \ Kennen \ AppData \ Local \ Temporary Projects \ WindowsApplication1 \ bin \ Debug \ WindowsApplication1.vshost.exe' –

0

你可以得到你的命令行参数是这样的:

Dim arguments As String() = Environment.GetCommandLineArgs() 

我发现这个MSDN上。

+0

但是,如何在'-f'或'-d'之后过滤文本? –

+0

您将得到一个包含所有参数的数组,因此第一个将是-f,第二个将包含您的文件夹名,第三个将包含-d等。需要循环遍历所有参数(foreach ...),在此循环中,您可以分析任何您喜欢的内容 –

+2

您可能想要为......下一个循环而不是foreach ...因为foreach ...并不能保证它会按正确的顺序处理。所以像For I一样Int32 = 0给arguments.Count - 1 ... <带参数(i)的东西...下一个。 https://msdn.microsoft.com/en-us/library/5ebk1751.aspx“如果您的代码依赖于以特定顺序遍历集合,则For Each ... Next循环不是最佳选择,除非您知道集合暴露的枚举器对象的特征。“ – Capellan