Batchdatei /Übergabeparameter wird abgeschnitten / Escapen / C#


tklustig

Erfahrenes Mitglied
#1
Hallo Leute,
ein C# Programm übergibt an eine Batchdatei mehrere Parameter, unter anderem auch folgende URL:
Code:
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:

Bash:
@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:

Code:
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:

C#:
        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");

            }
        }