0

在我的表单中,我在 var 中存储/创建一个命令行参数,以便稍后通过控制按钮使用它,以启动一个外部应用程序,并将该参数存储在我的 var 中,并且 var 内容是这样的字符串:

ExternalAPP.exe "Argument 1" "argument 2" "argument 3" "more arguments"

PS:参数是对文件夹路径的引用。

我需要做的是拆分 var 以获取所有文件夹路径(参数),并制作如下内容:

' Pseudocode
For each folder in var.split(ControlChars.Quote)
    for each file in get.folder.files
     appendline.(new_text_file, file.Name)
  Next

谢谢如果有人帮助我

更新:我需要拆分的 VAR 内容正是这样的:

"F:-=Temporal=-\Documentos\DVD Temazos\Rock" "F:-=Temporal=-\Documentos\DVD Temazos\Techno" "F:-=Temporal=-\Documentos\DVD Temazos\Pop"

*请注意,论坛没有在驱动器字母 F 之后粘贴斜线 \:*

4

4 回答 4

1

试试这个

dim Var As String = Command.exe "Argument 1" "argument 2" "argument 3" "more arguments"

dim entries = Var.Split(" "c)

For i As Integer = 1 To entries.Length - 1
   dim files As String() = Directory.GetFiles(entries(i))
Next
于 2012-11-22T00:00:47.330 回答
1

您的示例代码没有多大意义。它应该是命令行还是VB源代码?

但是,您似乎需要一个正则表达式来查找引号内的每个字符串。

正则表达式很难正确构建。我建议构建一个简单的正则表达式验证器,或者使用其中一个基于 Web 的验证器。

你的表达将是这样的(我不会验证这一点):

.*(\"(?<filepath>[^"])\")*.*

您将需要获取文件路径的所有匹配组值。

如果你控制你的程序输入,那么制作一个更容易解析的更友好的语法似乎是合适的。

如果这些是命令行参数,则命令 shell 将为您解析每个引用的参数,并且主例程的参数将包含它们。

我是一个 C# 人,所以一个快速的谷歌给了我这个:

子主()

  Dim s() As String = System.Environment.GetCommandLineArgs()

  Console.WriteLine(s(1))

结束子

于 2012-11-22T00:00:57.763 回答
1

如果您要完成的是解析命令行参数,请尝试以下操作:

Dim files() As String = System.Environment.GetCommandLineArgs()

http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx

这一行:

Var = Command.exe "Argument 1" "argument 2" "argument 3" "more arguments"

可能不会做你想做的事。双引号字符需要将整个字符串括起来并进行转义:

Var = "Command.exe ""Argument 1"" ""argument 2"" ""argument 3"" ""more arguments"""
于 2012-11-22T00:17:52.370 回答
1

你应该尝试这样的事情:

    Dim var As String = "Command.exe ""F:-=Temporal=-\Documentos\DVD Temazos\Rock"" ""F:-=Temporal=-\Documentos\DVD Temazos\Techno"" ""F:-=Temporal=-\Documentos\DVD Temazos\Pop"""
    var = var.Replace(":", ":\").Remove(0, var.IndexOf(" ") + 2)
    Dim dirs As New List(Of String)(var.Split(New String() {""" """}, StringSplitOptions.RemoveEmptyEntries))
    Dim files As New List(Of String)()

    For Each path As String In dirs
        Try
            If (Directory.Exists(path)) Then
                files.AddRange(Directory.GetFiles(path))
            Else
                Debug.Print(path & "path does not exists") ' check "Output Window"
            End If
        Catch ex As Exception
            Debug.Print(path & ": exception :" & ex.Message)  ' check "Output Window"
        End Try
    Next

编辑:

我刚刚在您的问题中注意到了这一点:

NOTICE THAT THE FORUM DOES NOT PASTED THE SLASH \ AFTER DRIVE LETTER F:
于 2012-11-22T06:49:50.870 回答