Dateipfad mit Makronamen besetzen

  • Der Titel ist vielleicht etwas verwirrend. Hier im Detail:

    Ich möchte auf verschiedenen Rechnern Pfade, die von Anwendungen genutzt werden (öffnen, speichern, template, etc.) auslesen (FileOpenDialog). Den Pfad möchte ich aber nun allgemeingültig in einer Übersicht mit Makros ablegen. Also aus "C:\users\bugfix" wird "C:\users\@UserName".

    Mein Ansatz wäre jetzt:

    • Alle pfadrelevanten Makros vorm Auslesen der Pfade ausführen und speichern
    • Nach jedem Auslesen für jedes Pfadmakro probieren, ob es Pfadbestandteil ist und ggf. mit dem Makronamen ersetzen

    Oder gibt es eine andere Möglichkeit?

  • Ich wüsste auf die schnelle keine, aber ich würde nicht generell ersetzen, sondern nur mit/bei dem absoluten Pfad...

    Gerade bei den @UserName Beispiel kann es ja sein, dass jemand woanders auch einen Ordner mit dem Namen hat (z.B. auf dem Desktop), der aber nicht erzetzt werden sollte.
    z.B. wenn du als @UserName=BugFix einen Ordner mit Bildern von einem Ausflug hast, wo jeder seine Bilder teilt, mit C:\users\BugFix\Desktop\AusflugBilder\Kanashius, C:\users\BugFix\Desktop\AusflugBilder\BugFix ,... Dann sollte ja nur das erste BugFix ersetzt werden.

    Aber kommt natürlich drauf an, wofür genau du das machen willst.

  • Ja, das hatte ich schon so geplant, dass "BugFix" nur mit "@Username" ersetzt wird, wenn "\users\" davor steht. Die Abhängigkeiten von Makros zu bestimmten Pfadkonstellationen muss ich natürlich gegenprüfen.

    Ich erstelle eine Auflistung aller in unserer Firma (an allen Standorten) genutzten, messaparaturspezifischen Daten (Kalibrierdaten, Definitionsdateien etc.). Ziel ist, dass alle Apparaturen und Meßgeräte mit ihren Definitions- und Kalibrierdaten auf jedem Meßfahrzeug-PC hinterlegt sind, um im Bedarfsfall ohne Einrichtungsaufwand Apparaturen und Meßgeräte tauschen zu können.

  • Können dir die Umgebungsvariablen nicht dabei behilflich sein?

    AutoIt
    MsgBox(0, "", EnvGet("HOMEDRIVE")&EnvGet("HOMEPATH"))

    Ansonsten kannst du ja auch eigene Environment Variablen verteilen. ;)

    Oftmals registrieren Anwendungen selbst den Pfad. Schau doch mal in der DOS Box nach mit „set“.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    Einmal editiert, zuletzt von Schnuffel (26. Juli 2025 um 09:28)

  • Moin,

    kannst Du Dir als Alternative vorstellen, die Daten auf allen Rechnern in einem festen neutralen Verzeichnis zur Verfügung zu stellen?

    Ansonsten würde aus C:\users\bugfix wohl eher @UserProfileDir werden.

  • Noch eine Idee: Vielleicht kannst Du ja (zumindest für Teile)

    AutoIt
    #include <WinAPIShPath.au3>
    _WinAPI_PathUnExpandEnvStrings ( $sFilePath )

    nutzen?

  • Wenn es um immer gleiche Anwendungen geht, sollten die Pfade doch bei Standardinstallation und Standardnutzung auf jedem pc gleich sein. Ich würde zuerst diese Pfade generalisieren.

    Aber vermutlich verstehe ich die Aufgabenstellung mal wieder nicht.🤣

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Mein erster Ansatz wäre auch die Uservarablen auszulesen, aber leider (danke liebe MS) stimmen sie nicht immer!

    Beispiel: Wenn ein Benutzer seinen Desktop auf OneDrive hat bleibt die Variable %homepath% auf \Users\Username, aber in Wirklichkeit ist der Desktop wo anders gespeichert.

    Zu finden ist das dann in der Registry HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders "Desktop". Aber auch andere "Pfade" sollten dort zu finden sein und vorallem auf jedes angepasstes Windows funktionieren.

    lg
    Racer

  • BugFix 1. August 2025 um 19:35

    Hat das Label von [ offen ] auf [ gelöst ] geändert.