Anwendungs-Software und Apps 14.489 Themen, 73.614 Beiträge

Relative Verknüpfung

Roman7 / 2 Antworten / Baumansicht Nickles

Hallo,
hier also mein Problem: Ich habe einen Ordner namens "main", der einen Ordner namens "data" enthält. Ich will nun in ordner "main" eine Verknüpfung zu einer Datei im Ordner "data" erstellen, was auch problemlos klappt. Nur macht Win eine absolute Verknüpfung, also D:\work\main\data\myfile.exe . Da ich das ganze aber auf eine CD brennen will, stimmt diese angabe ja später nicht mehr. Was muss ich schreiben, um die verknüpfung relativ zu bekommen. Sowas wie "..\data\myfile.exe" wird es wohl sein, ich habs aber nicht hinbekommen.


Danke für eure Mühe und sorry, wenn das eine zu Anfängerhafte frage sein sollte.

bei Antwort benachrichtigen
UselessUser Roman7 „Relative Verknüpfung“
Optionen

Hallo Roman7!

Wie wäre es mit einem kleinen Script? Den folgenden Code einfach in den Editor kopieren und in der 4. Zeile (ist extra markiert) zwischen den Anführungszeichen den Namen deiner Datei statt "myfile.exe" einsetzen, zu der du die relative Verknüpfung wünscht.
Jetzt den Code abspeichern unter einem beliebigen Dateinamen und mit der Endung ".vbs".
Danach das Script in einen Ordner (z. B. "Main") schieben und es wird alle Unterverzeichnisse dieses Ordners nach deiner Datei durchsuchen, um sie dann zu öffnen. Funktioniert sowohl auf Festplatte wie auf einem anderen Datenträger.
Müsste auf allen Win-Versionen laufen, sofern du den Scripting-Host installiert hast und das Ablaufen von Scripts auf deinem PC ermöglicht ist, was den Standardeinstellungen im Home-Bereich entspricht.

'--------------------- Begin Code
Dim filepath
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set SHE = WScript.CreateObject("WScript.Shell")

dateiname = "notepad.exe" '
Set linkpath = FSO.GetFile(WScript.ScriptFullName)
startfolder = linkpath.ParentFolder
Call Search (startfolder)

SHE.Run """" & filepath & """"

WScript.DisconnectObject FSO
WScript.DisconnectObject SHE
Set FSO = Nothing: Set SHE = Nothing

Sub Search (subrootfolder)
Set subrootfol = FSO.GetFolder(subrootfolder)
For Each subfol In subrootfol.SubFolders
For Each sfile In subfol.Files
If UCase(sfile.Name) = UCase(dateiname) Then
filepath = subfol & "" & dateiname
Exit Sub
End If
Next
Call Search (subfol)
Next
End Sub
'---------- End Code

Ich kann das Script auch so gestalten, dass sämtlich Verzeichnisse des Laufwerks auf die Datei durchsucht werden, also nicht nur die untergeordneten. Nur, wenn du es gebrauchen kannst ...

MfG

UselessUser

Rückmeldungen über Hilfestellungen sind sehr erwünscht:1. investiere ich Zeit, um dir zu antworten und2. möchte ich auch etwas dazulernen.
bei Antwort benachrichtigen
Philosoph UselessUser „Hallo Roman7! Wie wäre es mit einem kleinen Script? Den folgenden Code einfach...“
Optionen

Hallo UselessUser! :-)

Die Idee mit dem Script ist auch nicht schlecht, habe auch schon daran gedacht gehabt. Aber ich denke, mit der Exe fährt man sicherer, gerade was die verschiedenen Systeme angeht... daher habe ich dann diesen Vorschlag auch wieder verworfen... Wünsche dir noch einen schönen Abend.

Mit besten Grüßen und überhaupt,

Thomas A. K.


P.S.
Problem dürfte nun gelöst sein, da ich das kleine Starter-Programm eben programmiert und schon an Roman versendet habe (siehe Link http://www.nickles.de/static_cache/537476422.html), werde auch nochmal etwas zu der Basic-Programmiersprache schreiben.

bei Antwort benachrichtigen