WinSCP (command) und _RunDos ?

  • Guten Tag!

    _RunDos('C:\Program Files (x86)\WinSCP>winscp.com /command "option batch abort" "option confirm off" "open server@test.com" "put c:\test.txt /cygdrive/c/" "exit"')

    klappt nicht, warum nicht? ( ?

    Gruss,
    Automatisator

  • 1. "\WinSCP>winscp.com" könnte "\WinSCP\winscp.com" sein
    2. Pfad "C:\Program Files (x86)\WinSCP" existiert nicht
    3. "winscp.com" liegt nicht in dem Pfad
    4. Server "server@test.com" gibt es nicht
    5. Quell-Datei "c:\test.txt" fehlt
    6. Zielpfad "/cygdrive/c/" existiert nicht, wird aber nicht automatisch angelegt

    An obigem siehst Du, es kann an vielem liegen. Etwas mehr Infos sind schon notwendig.
    Funktioniert die Programmzeile in einer Kommandozeile ? Bzw. welche Fehlermeldung
    kommt in der Kommandozeile oder unter AutoIt ?

    Ein wenig tun musst Du schon ;)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • eben alles mit cmd überprüft (funktioniert!), ca. 1 Std. hin und her mit Autoit getestet, und erst dann habe ich hier eingeschaltet, weil ich nicht mehr weis was ich tun muss ;)
    unter Autoit kommt kein @error... ?

    EDIT:

    Zitat

    1. "\WinSCP>winscp.com" könnte "\WinSCP\winscp.com" sein


    das war wahrscheinlich ein fehler von restlichen fehlern...es klappt nämlich trotzdem nicht ?)

    2 Mal editiert, zuletzt von Automatisator (26. Mai 2012 um 12:03)

  • also kein plan mehr:

    in cmd funktioniert es so:
    "C:\Program Files (x86)\WinSCP\"winscp.com /command "option batch abort" "option confirm off" "open server@test.com" "put C:\test.txt /cygdrive/c/" "exit"

    und in _RunDos so:

    _RunDos('"C:\Program Files (x86)\WinSCP\"winscp.com /command "option batch abort" "option confirm off" "open server@test.com" "put C:\test.txt /cygdrive/c/" "exit"')

    wie finde ich nun heraus, was da eigentlich geschieht? es wird kein @error gesetzt bzw. _RunDos wird ausgeführt, und als rückabewert gibt es eben eine 1, jedoch weiß ich nicht wie ich an weitere ausgaben (wie zb. in cmd) ran komme...?

    EDIT:
    endlich die Lösung :)

    _RunDos('""C:\Program Files (x86)\WinSCP\"winscp.com /command "option batch abort" "option confirm off" "open server@test.com" "put C:\test.txt /cygdrive/c/" "exit""')

    etwas anderes: wie kann man ProgressBar mit _RunDos kombinieren?

    Danke!

    Einmal editiert, zuletzt von Automatisator (26. Mai 2012 um 12:47)

  • Du musst mal bei winscp nachsehen, ob Du an die Infomation kommst, wie weit der Vorgang fortgeschritten ist.
    Du brauchts irgendwie einen Wert in % oder "y byte kopiert von X" mit dem Du die ProgressBar steuerst.

    Edit: und Dich dann in der AutoIt-Hilfe unter "StdOutRead" informieren.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (26. Mai 2012 um 15:25)

  • Du musst mal bei winscp nachsehen, ob Du an die Infomation kommst, wie weit der Vorgang fortgeschritten ist.
    Du brauchts irgendwie einen Wert in % oder "y byte kopiert von X" mit dem Du die ProgressBar steuerst.

    Edit: und Dich dann in der AutoIt-Hilfe unter "StdOutRead" informieren.

    dein Tipp ist das wonach ich eigentlich suche bzw. die selbe Idee, hab sogar (teils) passendes gefunden und etwas angepasst:

    [autoit]

    Func _WINSCP($cmd)

    [/autoit][autoit][/autoit][autoit]

    Local $i = 0 ; ???
    Local $text = ''
    Local $pid = Run(@ComSpec & ' /c ' & $cmd, '', @SW_HIDE, 2 + 4)

    While 1
    $text &= StdoutRead($pid, False, False)
    If @error Then ExitLoop
    Sleep(10)
    ProgressSet($i, "")
    $i += 20 ; ???
    WEnd
    ProgressSet(100, "Fertig", "Komplett")
    ProgressOff()
    Return $text
    EndFunc

    [/autoit]

    um an die Prozente ran zu kommen, dachte ich man könnte StringSplit nehmen und dann $text (|) zerteilen, und dann halt aus erstellte (StringSplit)Array die letzte Zeile mit ins ProgressSet (beim jeden Durchlauf) irgenwie einbinden, nur wie macht man das..? oder macht man das ganz anders?

    Gruss,
    Automatisator

  • so geht es auf jedenfall in meinen scripten für den winscp upload!

    [autoit]


    $UploadVorgang = RunWait('"C:\Programme\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit][autoit][/autoit][autoit]

    $UploadVorgang = RunWait('"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit]

    am besten über @consolewrite prüfen, ob die pfade (leerzeichen im namen etc.) und variablen richtig sind, machmal fehlt ein "\" oder "/"

    [autoit]


    ConsoleWrite('"C:\Programme\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit]

    gruß gmmg

    2 Mal editiert, zuletzt von gmmg (26. Mai 2012 um 19:54)

  • Hallo gmmg,

    so geht es auf jedenfall in meinen scripten für den winscp upload!

    [autoit]


    $UploadVorgang = RunWait('"C:\Programme\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit] [autoit][/autoit] [autoit]

    $UploadVorgang = RunWait('"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit]

    am besten über @consolewrite prüfen, ob die pfade (leerzeichen im namen etc.) und variablen richtig sind, machmal fehlt ein "\" oder "/"

    [autoit]


    ConsoleWrite('"C:\Programme\WinSCP\WinSCP.com" /console /command "option batch on" "option confirm off" "open ' & $username & ":" & $pass & "@" & $server & '"' & ' "cd ' & $ftppath & '/" "put ' & $Uploaddatei & '" "exit"')

    [/autoit]


    danke Dir (hab etwas dazu gelernt)... :)
    das Problem habe ich nicht mehr:
    _RunDos('""C:\Program Files (x86)\WinSCP\"winscp.com /command "option batch abort" "option confirm off" "open server@test.com" "put C:\test.txt /cygdrive/c/" "exit""')

    klappt problemlos...

    nur das mir ProgressBar, da bin ich noch dabei irgendwie das ganze zu verstehen bzw. wie man WinSCP Daten Übertragung berechnen und in ProgressBar richtig anzeigen kann... ? hast Du da vielleicht auch paar gute beispiele?

    Gruss,
    Automatisator

    Einmal editiert, zuletzt von Automatisator (27. Mai 2012 um 01:40)