none
Batchdatei /Übergabeparameter wird abgeschnitten / Escapen / C#

    Frage

  • Hallo Leute,

    ein C# Programm übergibt an eine Batchdatei mehrere Parameter, unter anderem auch folgende URL:

    https://www.dat.de/myClaim/json/security/Login?fabrikat=DAT&signature=39d677a681b6f11c3f04fd1005accc4f27f5931a41360b09147a5551e042bafd&customerNumber=1317171&login=albechris&redirect=inbox.jsp#claim?subView=vro_calculation&claim=3940597

    Folgende Batchdatei zeigt auf, dass der Übergabestring nicht korrekt verarbeitet wird. Er wird abgeschnitten:

    @ECHO OFF
    REM SET hostname=DSEK012744
    REM SET username=HANNOVER\TKIPP
    REM SET password=TopSecret
    REM PsExec64 \\%hostname% -u %username% -p %password% -i -d -e EXPLORER %1
    ECHO %4
    PAUSE
    PsExec64 \\%1 -u %2 -p %3 -i -d -e EXPLORER %4

    Die Ausgabe für ECHO %4 wäre https://www.dat.de/myClaim/json/security/Login?fabrikat

    Auch, wenn ich den Übergabestring wie folgt escape, klappt es nicht!

    Gescapter Übergabestring:

    https://www.dat.de/myClaim/json/security/Login\?fabrikat^=DAT^&signature^=39d677a681b6f11c3f04fd1005accc4f27f5931a41360b09147a5551e042bafd^&customerNumber^=1317171^&login^=albechris^&redirect^=inbox.jsp#claim\?subView^=vro_calculation^&claim^=3940597

    Weiß jemand, wie man obigen Übergabestring so escapt, dass es klappt? Hier noch die C# Methode, die die Batchdatei aufruft:

            private static void StartBrowserRemote(string hostname, string username, string password, string url) {
                string folder = Environment.CurrentDirectory + "/";
                try {
                    Process p = new Process();
                    p.StartInfo = new ProcessStartInfo(folder + "startBrowserRemote.cmd");
                    p.StartInfo.Arguments = String.Format("{0} {1} {2} {3}", hostname, username, password, url);
                    p.Start();
                } catch(Exception er) {
                    _logger.Error(er.Message + Environment.NewLine + er.ToString());
                    DATForm.Ausgabe(er.Message, "Wichtige Mitteilung");
                }
            }



    • Bearbeitet tklustig Donnerstag, 18. April 2019 10:24
    Donnerstag, 18. April 2019 10:15

Antworten

  • Weiß jemand, wie man obigen Übergabestring so escapt, dass es klappt?

    Den ganzen Text in Anführungszeichen " setzen

    echo "https://www.dat.de/myClaim/json/security/Login?fabrikat=DAT&signature=39d677a681b6f11c3f04fd1005accc4f27f5931a41360b09147a5551e042ba"


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort vorgeschlagen Guido Franzke Donnerstag, 18. April 2019 13:45
    • Als Antwort markiert tklustig Donnerstag, 18. April 2019 20:13
    Donnerstag, 18. April 2019 12:37

Alle Antworten

  • Weiß jemand, wie man obigen Übergabestring so escapt, dass es klappt?

    Den ganzen Text in Anführungszeichen " setzen

    echo "https://www.dat.de/myClaim/json/security/Login?fabrikat=DAT&signature=39d677a681b6f11c3f04fd1005accc4f27f5931a41360b09147a5551e042ba"


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort vorgeschlagen Guido Franzke Donnerstag, 18. April 2019 13:45
    • Als Antwort markiert tklustig Donnerstag, 18. April 2019 20:13
    Donnerstag, 18. April 2019 12:37
  • Das klappt nur, wenn ich folgendes Script laufen lasse:

    @ECHO OFF
    SET hostname=DSEK012744
    SET url="https://www.dat.de/myClaim/inbox.jsp?rnd=30131#claim?subView=vro_calculation&claim=3940597"
    SET username=HANNOVER\TKIPP
    SET password=TopSecret
    ECHO %url%
    PAUSE
    PsExec64 \\%hostname% -u %username% -p %password% -i -d -e EXPLORER %url%

    C# übergibt den String allerdings ohne Hochkommatas. Alle Versuche, in der Batchdatei Hochkommatas einzufügen, scheitern. Sowohl

    @ECHO OFF
    SET hostname=DSEK012744
    SET url=https://www.dat.de/myClaim/inbox.jsp?rnd=30131#claim?subView=vro_calculation&claim=3940597
    SET username=HANNOVER\TKIPP
    SET password=TopSecret
    ECHO "%url%"
    PAUSE
    PsExec64 \\%hostname% -u %username% -p %password% -i -d -e EXPLORER "%url%"

    als auch

    @ECHO OFF
    SET hostname=DSEK012744
    SET url=https://www.dat.de/myClaim/inbox.jsp?rnd=30131#claim?subView=vro_calculation&claim=3940597
    Set uri="%url%"
    SET username=HANNOVER\TKIPP
    SET password=topsecret
    ECHO %uri%
    PAUSE
    PsExec64 \\%hostname% -u %username% -p %password% -i -d -e EXPLORER %uri%

    funktionert nicht!!




    • Bearbeitet tklustig Donnerstag, 18. April 2019 20:01
    Donnerstag, 18. April 2019 19:46
  • Bingo. Vielen Dank für Deinen Tipp. So klappt's endlich:

    string url = '\u0022' + datCustomLink + '\u0022';
    _logger.Debug(url);
    StartBrowserRemote(AHKleine.hostname, AHKleine.usernameDecrypted, AHKleine.passwordDecrypted, url);

    Und hier das Batchscript

    @ECHO OFF
    PsExec64 \\%1 -u %2 -p %3 -i -d -e EXPLORER %4


    • Bearbeitet tklustig Donnerstag, 18. April 2019 20:14
    Donnerstag, 18. April 2019 20:13