Verzeichniss wechseln
-
Hallo,
ich hab da mal ein Problem
Ich möchte innerhalb ein C Proggis das Verz. wechseln. Das ganze klappt ja auch mit chdir ganz gut.
Leider wird aber nach dem verlassen meines Programms wieder in das Verzeichniss vor dem Prog. start gewechselt.
Wie kann ich das unterbinden.
Ich möchte gerne nach verlassen in dem chdir Verz. stehenDanke und Gruß
Chris
-
der Grund warum Die Eingabeaufforderung (comand.com) nicht im
Eingestellten Verzeichnis ist, weil diese Eingabeaufforderung der übergordnete
Prozess zu dem aufgerufenen Programm ist mit der aktuellen
Verzeichniseinstellung!Wenn das so einfach mit Verzeichnisswechsel wäre dann würde das aufgerufene
Programm ja den Ast absägen auf dem es sizt.Sowas wollte schonmal jemand oder einige machen hier im Forum
und das geht nur über Umwege:- entweder ueber richtige Prozesskomunikation untereinander
(Verzeichniswechselprogramm <--> comand.com) dann ist aber die Frage
wie weit beherrscht das der Kommandointerpreter (comand.com)
den der ist ja je nach OS noch ein altes DOS - Programm
wie das bei WIN 2000 oder XP ist vermag ich nicht zu sagen
welche Funktionalitäten deren Kommandointerpreter besitzt- die Gleichgesinnten die das auch wollten sind noch in ne
andere Richtung gegangen, da muss man sich aber auch mit
Stabelverarbeitungsdateien sog. Batch - Dateien
auskennen!
ich kann Dir die Richtung (Idee) nur grob vorgebenDein Programm macht eine Eingabeabfrage: Verzeichnis?
dann erstellt (generiert) sich das Programm mit
den entsprechenden Befehlen und dem Verzeichnis?
die entsprechende Batchfile
Deine exe. sprich Dein programm beendet und die Batchfile arbeitet
weiter -> ala Verzeichniswechsel -> und die Datei (*.bat) muss
sich dann noch selbst löschendas war jetzt nur ganz grob genauer kann ich es nicht wiedergeben mfg
P.S. benutz doch mal FAQ und die Suche ich glaub das gibts dort noch
-
Herausgekommen sind 2 Batchdateien und das C - Programm
welches die Abfrage macht wohin man wechseln will bei mir funzt es
aber die besagten Batchfiles bleiben erhalten!1. ich brauche bei meiner Variante eine Batchfile die das C - programm
(Verzeichniswechselprogramm) startet!
Merke wird aus einer Batch - File eine EXE oder ähn. gestartet
wartet der Kommandointerpreter bis das aufgerufenen Programm
mit irgendeinen Rückgabe wert terminiert
(siehe C - Code: int main(...) { ...; return 0;} )das kann man in Batchdateien mit dem Statment:
if errorlevel "irgendend ne Zahl" DOSbefehl tunsiehe jetzt den Quelltext dieser Batchfile:
cls Verzeichniswechsel.exe if errorlevel 0 change.bat
2. Die Verzeichniswechsel.exe generiert eine Batchdatei mit dem Namen
change.bat konnte diese Datei erstellt werden terminiert
Verzeichniswechsel.exe mit dem Rückgabewert 0
was in der auslösenden Batchdatei mit dem if errorlevel 0 überprüft
wird, trifft diese Bedingung zu kann die Batchfile die Batchfile
change.bat ausführen und der Verzeichniswechsel gelingtCode des C - Programm
#include <stdio.h> //--------------------------------------------------------------------------- #define MAXSIGNS 8192 /* Achtung das das kann ne Stolperfalle fuer das Programm sein je nach dem wie lang die Verzeichnis eingabe wird */ int main(void) { char data[MAXSIGNS]; const char *fname = "change.bat"; FILE *fp = NULL; if( (fp=fopen(fname,"w")) == NULL ) return -1; printf("In welches Directory? "); scanf("%s", data); getchar(); fprintf(fp,"cls\n"); fprintf(fp,"cd %s\ncls", data); fclose(fp); return 0; }
Ach ja die EXE und die Batch (*.bat) sollten im selben
Verzeichnis stehen!!! Und due rufst das C - Proggi immer
indirekt ueber die Batchfile auf welche den "ERRORLEVEL" prüft
um darüber die generierte "change.bat" auszulösen!!mfg sclearscreen