You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Friday, October 12th 2007, 1:03am

Programm in anderes Verzeichnis verschieben

Kann mir jemand posten wie der Befehl lautet um ein Programm in ein anderes Verzeichnis verschieben zulassen.

oder

Wie man es schaft, dass das Programm, wenn es ausgeführt wird, sich selbt verschiebt.

[i]z.b. Programm A wird per double-klick angesprochen, es wird ausgeführt, verschiebt sich aber in xxx Verseichnis.[/i]

2

Friday, October 12th 2007, 5:28pm

Das geht nicht. Ein Programm kann sich nicht sebst verschieben. Außerdem solltest du die die Plattform dazusagen (Win/Linux)

3

Friday, October 12th 2007, 11:47pm

hmm... was ich mir überlegt hab vllt. ein programm was sich selbst kopiert also es liegen zwei datein vor eine exe und eine kA welcher typ is ja egal in der steht dann alles aus der exe und die verschiebst du dann ... ist aber nur ne überlegung

4

Sunday, October 14th 2007, 3:29am

Sich selbst kopieren ist prinzipiell möglich (wird von Viren/Würmern/Trojanern oft gemacht), das anschließende sich selber Löschen (kopieren + löschen = verschieben) allerdings nicht.

5

Sunday, October 14th 2007, 12:11pm

hmm naja du kopierst dann rufst du das kopierte programm auf und das löscht das alte...

das wäre doch ne möglichkeit oder???

6

Sunday, October 14th 2007, 1:52pm

Ich habe mir das gerade nochmal durchgelesen. Mein Eindruck jetzt ist, dass du einfach das Programm von Ort X aus starten willst aber im Programm für die relativen Pfadangaben von Y ausgehen willst.

Dafür gibt es wohl 2 Lösungsansätze, die ohne verschieben auskommen:

1) Du startest das ganze über einen shellscript:

Win: "start.bat"

Bash

1
2
cd N:\Pfad\zur\exe
dateiname.exe


POSIX "start.sh"

Bash

1
2
3
#!/bin/sh
cd /pfad/zur/exe/
./dateiname


2) Du berücksichtigst den Pfad:

C/C++ Quellcode

1
2
3
std::ifstream in("dateiname");
//wird zu
std::ifstream in(std::string(argv[0]) + "dateiname");


Wenn ich dich da falsch verstanden habe bitte ignorieren, dann nehm den Ansatz von Donasa (kopieren geht mit ISO-C++, für das Löschen musst du auf API-Funktionen zurückgreifen ;) )

EDIT://
Für den 2. Fall musst du noch den Teil von argv[0] nach dem letzten (back)slash entfernen.

7

Sunday, October 14th 2007, 2:14pm

hmm naja du kopierst dann rufst du das kopierte programm auf und das löscht das alte...

das wäre doch ne möglichkeit oder???
Ja, allerdings muss das Programm welches dann gelöscht werden soll unbedingt schon beendet sein, sonst kannst du es nicht löschen. Du musst also künstliche Verzögerungen in dein Programm einbauen. Mein Vorschlag wäre, dass du du es kopierst und dann im autostart ne kleine Batchdatei hast welches das andere Programm beim nächsten Neustart dann entfernt. Das ist sicherer und so eilig kannst du es ja nicht haben, das zu entfernen.

8

Sunday, October 14th 2007, 2:30pm

oder

prg A ruft prog B auf prog a schließ sich prog b schließt sich und löscht vorher prog a

9

Sunday, October 14th 2007, 3:11pm

Das Problem ist, dass Prog A und Prog B zwei unterschiedliche Tasks sind und du keine zuverlässige zeitliche Abschätzung machen kannst. Prog B weiß nicht wann Prog A sich beendet auch wenn Prog A es sofort nach dem Aufruf von Prog B macht. Durch Multitasking und co. kannst du nie exakt vorhersagen, ob das System nicht erst Prog A startet, welches dann Prog B aufruft, sich dann entscheidet Prog B ganz durchlaufen zu lassen und dann erst bei Prog B weitermacht. Darauf hast du keinen Einfluss und das hängt von vielen Faktoren ab.

10

Sunday, October 14th 2007, 11:35pm

Erst mal Danke für die Antworten.

SeBa hat schon verstanden auf was ich hinaus will.

#Das Löschen ist erstmal nicht von bedeutung, aber ich würde gerne wissen was ich im Quellcode ein geben muss, damit sich das Programm in ein anderes Verzeichnis kopiert. Die Legtüre die ich da zurate gezogen hab beschreibt nur wie ich eine andere Datei verschiebe, das will ich aber nicht, das Programm soll es von sich aus selbst tun und wie gesagt das löschen wäre erst mal egal.

#Die Plattform ist Win..

# darthdespotism danke werde ich auf jeden fall mal abspeichern, ist aber nicht der Sinn dessen.

11

Monday, October 15th 2007, 4:46pm

Du kannste den Code zum kopieren eigentlich verwenden (der Pfad zu eigenen Anwendung ist das 0. Argument dass dir übergeben wird). Du musst nur darauf achten dass du das Programm nich mit exklusiven (Schreib-)Rechten öffnest, sondern lesend (shared read).

Social bookmarks