0

私のフォームでは、コマンドライン引数を変数内に保存/作成して、後でコントロールボタンで使用し、その引数を変数内に保存して外部アプリを起動します。変数の内容は次のようになります。

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>[^"])\")*.*

filepath のすべての一致グループ値を取得する必要があります。

プログラムの入力を制御する場合は、解析しやすい、より使いやすい構文を作成するのが適切と思われます。

これらがコマンド ライン パラメーターである場合、コマンド シェルは引用符で囲まれた各パラメーターを解析し、メイン ルーチンへの引数にそれらが含まれます。

私はC#の男なので、簡単なグーグルでこれを教えてくれました:

サブメイン()

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

  Console.WriteLine(s(1))

サブ終了

于 2012-11-22T00:00:57.763 に答える
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 に答える
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 に答える