ShellExecute mit Parametern

  • Hallo liebe Forengemeinde,

    ich verzweifle hier gerade an einer eigentlich unkomplizierten Sache..
    Ich möchte per Skript ein Backup einer Firebird Datenbank mit aktuellem Datum und Uhrzeit machen.

    Mein Skript sieht bis jetzt folgendermaßen aus:

    AutoIt
    #include <date.au3>
    
    
    Dim $_date = StringReplace(_NowDate(),".", "_")
    Dim $_time = StringReplace(_NowTime(),":", "_")
    
    
    ShellExecute('C:\Program Files (x86)\Firebird\Firebird_2_5\bin\nbackup.exe', '-U sysdba -P masterkey -B 0 "C:\Datenbank\Database.FDB" "D:\Backups\Firebird\Database_"'& $_date & '"_"' & $_time & '".nbk"')


    Wenn ich die nbackup.exe mit den entsprechenden Parametern normal ausführe funktioniert alles wunderbar.
    Aus meinem Skript heraus funktioniert es allerdings noch garnicht. Ich glaube, dass ich da rein Fomatierungsfehler mit den Anführungszeichen und den Apostrophen habe, aber ich krieg es ums verrecken nicht hin.

    Wäre jemand so lieb und könnte mir verraten, was da falsch ist? :love:

    Im Voraus vielen Dank!

    • Offizieller Beitrag

    Warum packst du Datum und Uhrzeit zusätzlich in Gänsefüßchen. die sollen doch Bestandteil des Dateinamens sein.
    Am Besten immer die Strings in einzelnen Variablen erstellen und dann auch überprüfen, was bei rauskommt.

    AutoIt
    #include <date.au3>
    
    
    Local $_date = StringReplace(_NowDate(),".", "_")
    Local $_time = StringReplace(_NowTime(),":", "_")
    Local $sCmd = 'C:\Program Files (x86)\Firebird\Firebird_2_5\bin\nbackup.exe'
    Local $sParam = '-U sysdba -P masterkey -B 0 "C:\Datenbank\Database.FDB" "D:\Backups\Firebird\Database_' & $_date & '_' & $_time & '.nbk"'
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   var: $sParam --> " & $sParam & @LF)
    ; -U sysdba -P masterkey -B 0 "C:\Datenbank\Database.FDB" "D:\Backups\Firebird\Database_23_06_2016_10_06_37.nbk"
    ShellExecute($sCmd, $sParam)
  • Vielen Dank BugFix für deine Hilfe, es funktioniert jetzt!! :part::part:

    Ich hab am ende nur noch mit Gänsefüßchen um mich geworfen, weil ich keine Ahnung hatte, warum es nicht geht :whistling:
    Werde mir deinen Tipp zu Herzen nehmen und die Strings zukünftig in Variablen erstellen.

    Nochmals vielen Dank!