CMDLINE Bug "" --> werden ignoriert

  • Hallo zusammen,

    ich habe ein Problem mit dem Array $CMDLINE.

    Mein Scriptaufruf schaut so ungefair aus z.b. script.exe cmd.exe /c regedit /S "c:\neuer ordner\file.reg"

    Jetzt will ich dieses mit folgendem code auswerten.

    [autoit]


    if $CmdLine[0] > 0 then
    For $i=1 to $CmdLine[0]
    $program &= $CmdLine[$i]
    Next
    EndIf
    Run($program)

    [/autoit]

    Jedoch übergibt mir das Script nur folgendes:


    Zitat

    cmd.exe /c regedit /S c:\neuer ordner\file.reg


    Also ist mein Problem folgendes.

    Die CMDLINE unterschlägt mir die ".

    Gibt es eine mögliche Lösung hierfür?

    Leider ist auch keine Lösung im Englischen Forum ersichtlich:
    http://www.autoitscript.com/forum/index.php?showtopic=13093&st=0

    Ich danke euch schon jetzt

    Grüße
    SystemEis

    Einmal editiert, zuletzt von SystemEis (6. April 2010 um 15:16)

  • Im kompilierten Zustand kannst du $CMDLINERAW verwenden. Unkompiliert bekommst du aber unerwünschte Parameter (z.B. Skriptpfad oder /AutoIt3ExecuteScript). Ich denke, so sollte es im unkompilierten Zustand funktionieren:

    [autoit]

    $CMD=""
    For $i = 1 To $CMDLINE[0]
    If StringRegExp($CMDLINE[$i], "\s") Then
    $CMD &= '"' & $CMDLINE[$i] & '" '
    Else
    $CMD &= $CMDLINE[$i] & " "
    EndIf
    Next
    MsgBox(0,"", $CMD)

    [/autoit]
  • Danke euch allen.

    @funkey
    Interesannter Ansatz von dir.

    Wäre auch möglich.

    Habe mir folgendes zusammengebastelt.

    [autoit]

    Dim $program
    If $CmdLine[0] > 0 Then
    For $i = 1 To $CmdLine[0]
    $pro = _StringBetween($CmdLine[$i], "'", "'", 1)
    If @error = 0 Then
    $program &= '"' & $pro[$pro[0]] & '"'
    Else
    $program &= $CmdLine[$i]
    EndIf
    Next
    EndIf

    [/autoit]

    @progandy
    Du hast mir jedoch die schönste Lösung gebracht.

    ;) $CMDLINERAW <-- Genau meine Lösung ;)

    Danke und eine schöne Woche euch allen