Laufwerkt ermittlung und Buchstabenersaetzung in datein
-
Halli Hallo
Mein Problem ist folgendes es existiert ein Program auf einem USB-Stick. Nun soll in diesem Programm jeweils noch überprüft werden auf welchem laufwerk der USB-stick sitzt.
Mal angenommen bei einem PC ist es F: beim anderen G: usw usw. Diese Laufwerksbuchstaben müssen so nach der überprüfung in dem Programm auf dem USB-stick an bestimmten stellen umgeschrieben werden.
Z.b man steckt den USB-stick in einen PC dort hat er laufwerkt F: nun arbeit man dort mit dem programm wechselt den PC wo nun der Stick jedoch auf laufwerkt G: sitzt. Nun muss ersteinmal erkannt werden das der stick nun auf G: sitzt und damit sämtliche Pfade in dem Programm auf dem stick umgebogen werden. Sprich F: durch G: ersetzt werden. Funktioniert das eventuell mit batch?
Wie baue ich mir dieses programm, sprich:
+++ wie überprüfe ich überhaupt an welchem laufwerk der stick sitzt
+++ wie finde und ersätze ich die Laufwerksbuchstaben in dem programmVielen dank schonmal für die hilfe ich hoffe ihr habt ideen.
Thx und bye bye
-
Dafür wirst du die WinAPI hinzuziehen müssen. Ich verschieb dich mal ins entsprechende Forum.
MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi!
Erstmal zu der einfachsten Frage:
Wie überprüfst du überhaupt an welchem laufwerk der stick sitzt ?char Buf[MAX_PATH]; GetModuleFileName( NULL, Buf, MAX_PATH ); char Drive = Buf[0];Müsste funktionieren, aber auf jeden Fall ausprobieren! In Buf müsste dann nämlich sowas wie F:\lala\bebe.exe stehen. Der erste Buchstabe ist dann dein Laufwerksbuchstabe.
Zu Ersetzen vom Laufwerksbuchstaben in deinem Programm:
Bevor du das angehst, ist nämlich etwas umständlich, musst du dich erstmal fragen, ob du das so unbedingt brauchst.
Ich schätze mal, du willst mit deinem Programm auf andere Dateien auf dem Memory-Stick zugreifen. Da kannst du dann auch relative Pfade verwenden.Angenommen, dies wäre dein Dateisystem:
MemoryStick F: - IrgendeinOrdner - Programm.exe - Data - SomeFile.dat - SomeOtherFile.datWenn du jetzt mit deinem Programm z.B. auf den Ordner Data zugreifen willst, kannst du einfach als Dateinamen *Data* statt F:\Data.
Wenn du auf eine Datei in Data zugreifen willst, kannst du als Dateiname einfach Data\SomeFile.dat angeben.Dafür hat Windows nämlich das Arbeitsverzeichnis (engl.: Work-Directory) entwickelt. Windows "weiß" dann nämlich, dass dein Programm von F: gestartet wurde, weil das Programm ja im Verzeichnis F: liegt. F: ist dann das Arbeitsverzeichnis von deinem Programm. Wenn du mit dem Programm jetzt auf irgendwelche Dateien zugreifen willst, kannst du auch relative Pfade angeben. Z.B. öffnest du eine Datei mit CreateFile. Als Parameter übergibst du Data\SomeFile.dat. Windows guckt, ob die Datei ausgehend vom Arbeitsverzeichnis existiert, also F:\Data\SomeFile.dat. Wenn nicht, wird geguckt, ob so "normal" die Datei Data\SomeFile.dat existiert. Wenn nicht (ist ja kein Laufwerksbuchstabe davor), dann gibt die Funktion einen Fehler zurück.
Außerdem kannst du Pfade auch in deinem Programm zusammensetzen! Du suchst dir am Anfang deines Programmes den Laufwerksbuchstaben raus und erstellst dir damit deine Dateinamen. Z.B. so:
string FileName = "X:\\Data\\SomeFile.dat"; FileName[0] = Drive;Kapito?
-
