Announcement

Collapse
No announcement yet.

Path-Settings einer Batch-Datei nutzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Path-Settings einer Batch-Datei nutzen

    Hallo,

    ich habe in meinem C#-Programme eine Methode, die ShapeDateien erzeugen soll. Zum Erzeugen der ShapeDateien nutze ich ein externes Tool (FWTools). Diese externe Tool muss man aber über Start/Programme ausführen was eine Art DOS-Box aufmacht und entsprechende Pfade setzt.

    Inhalt der Batch-Datei die im Start/Programme-Menü ausgeführt wird.

    Code:
    IF exist "%FWTOOLS_OVERRIDE%\setfw.bat" SET FWTOOLS_DIR=%FWTOOLS_OVERRIDE%
    
    IF exist "%FWTOOLS_DIR%\setfw.bat" goto skip_err
    
    echo FWTOOLS_DIR not set properly in setfw.bat, please fix and rerun.
    goto ALL_DONE
    
    :SKIP_ERR
    
    PATH=%FWTOOLS_DIR%\bin;%FWTOOLS_DIR%\python;%PATH%
    set PYTHONPATH=%FWTOOLS_DIR%\pymod
    set PROJ_LIB=%FWTOOLS_DIR%\proj_lib
    set GEOTIFF_CSV=%FWTOOLS_DIR%\data
    set GDAL_DATA=%FWTOOLS_DIR%\data
    set GDAL_DRIVER_PATH=%FWTOOLS_DIR%\gdal_plugins
    REM set CPL_DEBUG=ON
    
    :ALL_DONE
    Wenn ich die Batch-Datei in meinem C#-Programm aufrufe, gehen die Einstellungen der Batch-Datei "verloren".

    C#-Aufruf der setfw.bat:
    Code:
                    System.Diagnostics.Process p = new System.Diagnostics.Process();
                    p.StartInfo.FileName = strPathFWTools + @"\setfw.bat";
                    p.StartInfo.Arguments = "";
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.CreateNoWindow = true;
                    string sOutput;
                    p.Start();
                    sOutput = p.StandardOutput.ReadToEnd();
                    Trace.WriteLine(sOutput);
                    p.WaitForExit();
                    p.Close();
    Leider kann ich die Shell auch nicht zuvor öffnen und darin mein Programm starten. Es muss also wirklich so sein, dass mein Programm gestartet wird, das Programm die "setfw.bat" aufruft und die weiteren C#-Befehle auch die Einstellungen der Batch-Datei noch "kennen".

    Hat jemand eine Idee ?


    Vielen Dank,
    Tucca

  • #2
    Hallo,

    was passiert, wenn cmd.exe direkt mit dem Schalter /C ausgerufen wird und dabei die .bat-Datei nur als Kommando erhält?

    Code:
    ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
    startInfo.Arguments = "/C " + e.Command;

    Comment

    Working...
    X