Win XP: Verknüpfung mit Python erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Hallo,

wie mache ich denn am besten folgendes: Ich habe ein Verzeichnis mit Unterverzeichnissen. Auf einige davon (selektiert einerseits nach Teilen des Verzeichnisnamens, andererseits nach Erstellungsdatum der Dateien darin) möchte ich in einem anderen Verzeichnis eine Verknüpfung erstellen, aber nur, wenn es diese Verknüpfung noch nicht gibt.

Kernproblem ist schonmal das erstellen der Verknüpfung - wie mache ich das?

...Und der Nachsatz mit dem 'wenn es diese noch nicht gibt' - das deswegen weil ja, wenn man sonst im explorer eine Verknüpfung erstellt, eben nicht gefragt wird 'gibt's schon, überschreiben?', sondern stumpf eine neue mit (2) dahinter angelegt wird...

wie immer dankbar für eure Hilfe,
Gruss,
Jo

EDIT: Muss ja sagen dass Python in diesem Fall nur meine zweite Wahl war, aber anscheinend gibt es in Batch keine Möglichkeit dass halbwegs einfach zu machen... Und ich will nun nicht noch extra VB lernen... :)
Zuletzt geändert von jo_hb am Montag 15. September 2008, 21:18, insgesamt 1-mal geändert.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

os.link
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Hm, aber dazu sagt meine Python-doku: 'availability: Macintosh, UNIX'...
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

...und nach kurzem Test scheints das auch echt nicht zu geben unter XP:

Code: Alles auswählen

    from os import link
ImportError: cannot import name link
>>> 
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

XP unterstützt keine Symlinks wie sie aus Linux bekannt sind, das geht erst ab Vista (und ich denke os.link geht dort auch nicht, weil bisher keiner da was dran gemacht hat), XP selbst unterstützt vom NTFS her nur die Junction Points, das sind Verzeichnis-Symlinks.

Für die "Verknüpfungen", also dieser Binärschrott in den LNK-Dateien muss man wohl pywin32 nutzen. Wie der Aufruf genau aussieht habe ich auf die schnelle nicht herausgefunden. Aber schließlich habe ich auch kein Windows, also ist mein Interesse nur "schwach bis mäßig" ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Hmja, das wäre ja eine super Vorlage für die bekannte und beliebte windows<->linux diskussion! :) Ich für meinen Teil bin mit XP jedenfalls ganz happy, läuft seit 3 Jahren ohne Mucken, ist in der Zeit nicht wesentlich lahmer geworden und ich musste mich auch bisher nicht mit irgendwelchen technischen Details rumärgern wenn ich eigentlich was ganz anderes machen wollte. Was will man mehr? :)

Egal. Was ich ja eigentlich nur noch wissen wollte, pywin32 sieht ja schon so aus als wär's das was ich will, aber ich finde irgendwie keine richtige doku dazu. Hat da vielleicht jemand nen link?

Danke schonmal! :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jo_hb hat geschrieben:Was ich ja eigentlich nur noch wissen wollte, pywin32 sieht ja schon so aus als wär's das was ich will, aber ich finde irgendwie keine richtige doku dazu.
Eine (etwas dünne) Dokumentation ist im Paket mitgeliefert, ansonsten gibt es nur die Codeschnippsel die man im Internet so findet und die MSDN, wo man oft die C-Beispiele für pywin32 adaptieren kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

...
Seit Windows NT 6.0 (Windows Vista, Windows 2008) stehen echte symbolische Links zur Verfügung, die transparent im Dateisystem vorliegen und auf Dateien, Verzeichnisse oder UNC-Pfade verweisen können. Symbolische Links dürfen allerdings nur mit Administratorrechten angelegt werden.
...
Eine weitere Möglichkeit in älteren Versionen von Windows sind sogenannte Abzweigungspunkte (englisch: „junction points“), welche jedoch das Dateisystem NTFS 5 oder ab Version 3.0 (Windows 2000, Windows XP, Windows 2003 und Windows Vista) voraussetzten. Diese sind den symbolischen Verknüpfungen auf Verzeichnisse sehr viel ähnlicher als die üblichen Verknüpfungen.
...
http://de.wikipedia.org/wiki/Symbolisch ... ng#Windows

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wird eigentlich ``os.link`` mal angepasst, die zu nutzen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

lunar

Leonidas hat geschrieben:Wird eigentlich ``os.link`` mal angepasst, die zu nutzen?
Mal abgesehen davon, dass es ziemlich cool wäre, dass auch für Windows zu haben, stehe ich der Idee an sich etwas skeptisch gegenüber. Windows nutzt die Junctions noch nicht mal selbst ... insofern würde mich wundern, wenn Junctions und Symlinks hohe Priorität bei den Maintainern von NTFS hat. Außerdem ist das aus Linux-Sicht auch eher unglücklich, da iirc weder ntfs3g noch das Kernel-Modul Junctions unterstützen. Ich glaube, nicht mal der Paragon-Treiber kommt damit zurecht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Mal abgesehen davon, dass es ziemlich cool wäre, dass auch für Windows zu haben, stehe ich der Idee an sich etwas skeptisch gegenüber. Windows nutzt die Junctions noch nicht mal selbst ... insofern würde mich wundern, wenn Junctions und Symlinks hohe Priorität bei den Maintainern von NTFS hat.
Ich denke schon, dass XP und Vista die irgendwo nutzen (vielleicht bei diesem Overlay-Dateisystemen irgendwie), sonst würde die Microsoft wohl eher kaum aufgenommen haben, denn den Wunsch nach Symlinks haben sie ja erfolgreich jahrzehntelang ignoriert und sogar mit dem Binärschrott das Rad selbst noch mal erfunden.
lunar hat geschrieben:Außerdem ist das aus Linux-Sicht auch eher unglücklich, da iirc weder ntfs3g noch das Kernel-Modul Junctions unterstützen. Ich glaube, nicht mal der Paragon-Treiber kommt damit zurecht.
Naja, Wine unterstützt vielleicht auch nicht alles was man mit pywin32 und ctypes hinbekommt, trotzdem ist es gut dass es unter Windows geht. Die Implementation von Windows-only Features dadurch zu verzögern, dass sie unter Linux nicht verfügbar sind mutet etwas seltsam an. Aber ich denke ich verstehe was du meinst.

Wir werden ja noch sehen wie es mit den Symlinks auf Windows weitergeht, bisher wird Vista ja generell eher abgelehnt (wie so ziemlich jede Windows-Version anfangs) und Programme die die NTFS Symlinks nutzen sind mir auch nicht bekannt. Aber das kann ich wenigstens darauf schieben, dass ich kein Windows habe.

Allerdings ist das etwas seltsam, da NTFS in XP die Version 3.1 trägt und selbiges auch bei Vista, daher wundert es mich, wo auf einmal der Symlink-Support herkommt (laut Wikipedia heißen die manchmal auch NTFS 5.1 und 6.0, aber das schiebe ich auf die Windows-Versionen die jeweils 5.1 und 6.0 sind; die deutsche Wikipedia wird in der Hinsicht ganz konfus).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Leonidas hat geschrieben:
lunar hat geschrieben:Mal abgesehen davon, dass es ziemlich cool wäre, dass auch für Windows zu haben, stehe ich der Idee an sich etwas skeptisch gegenüber. Windows nutzt die Junctions noch nicht mal selbst ... insofern würde mich wundern, wenn Junctions und Symlinks hohe Priorität bei den Maintainern von NTFS hat.
Ich denke schon, dass XP und Vista die irgendwo nutzen (vielleicht bei diesem Overlay-Dateisystemen irgendwie), sonst würde die Microsoft wohl eher kaum aufgenommen haben, denn den Wunsch nach Symlinks haben sie ja erfolgreich jahrzehntelang ignoriert und sogar mit dem Binärschrott das Rad selbst noch mal erfunden.
Diesen "Binärschrott" gibt es auch unter Linux, nur eben nicht binär, und eigentlich ist es auch kein Schrott. Symbole zu definieren oder das Arbeitsverzeichnis anzupassen, ist nämlich mit Symlinks nicht möglich, weswegen es unter Linux seit längerem Desktop-Dateien gibt, die es ja auch bis zum Freedesktop-Standard gebracht haben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Symbole zu definieren oder das Arbeitsverzeichnis anzupassen, ist nämlich mit Symlinks nicht möglich, weswegen es unter Linux seit längerem Desktop-Dateien gibt, die es ja auch bis zum Freedesktop-Standard gebracht haben.
Also zumindest zweiteres funktioniert mit kleinen Shell-Skripten überaus gut und recht flexibel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten