fireemerald
Goto Top

Kompletter Netzwerkpfad von Datei bzw. Ordner kopieren

Hallo Zusammen,

aktuell stellt sich mir folgendes Problem:

Ich habe im Arbeitsplatz sehr viele unterschiedliche Netzwerkordner angebunden.
Nun navigiere ich zu einer beliebigen Datei/Ordner in einem beliebigen Netzwerkordner und möchte den kompletten Netzwerkpfad zu der Datei/Ordner.

Als Beispiel, die Datei befindet sich bei mir auf:
H:\Ordner845 der eigentliche Pfad ist jedoch: \\Blub01\Blob\Ordner845


Kennt jemand eine simple Möglichkeit diesen Pfad mit Rechtsklick -> Kompletter Pfad kopieren oder so ähnlich herauszubekommen?

Aktuell hab ich mir ein VBS Script zusammengebastelt, wofür ich allerdings immer die betreffende Datei oder Ordner auf die VBS Datei ziehen muss.

Option Explicit
Dim OutlookApp, Mail
Dim strUncPfad, WShNetwork, colDrives, i, strPath, strClipPath
Dim fso, Path, DriveLetter
Dim Debug, CopyToClip, CanChoose, ClipExists
Dim Result

'# Config  
Debug       = False ' auf TRUE setzen für Meldungen  
CanChoose   = True ' auf TRUE setzen für ein Auswahlfenster  

CopyToClip  = True ' auf TRUE setzen für Kopie in Zwischenablage (Ist CanChoose auf TRUE, so wird dies ignoriert)  

strClipPath = "\\<denkt euch den Pfad>\clip.exe"  

'# Übergebenen Pfad vom Explorer auslesen  
Set fso = CreateObject("Scripting.FileSystemObject")  
If Debug Then wscript.echo "FSO: """ & fso.GetAbsolutePathName(wscript.arguments(0)) & """"  
Path = fso.GetAbsolutePathName(wscript.arguments(0))
Set fso = nothing
DriveLetter = Ucase(Left(Path, 1))
Path = Mid(Path,3)
If Debug Then  Wscript.Echo "Laufwerk: """ & DriveLetter & """ Pfad: """ & Path & """" ' Ausgabe des ersten Zeichen  
Set WshNetwork = Wscript.CreateObject("Wscript.Network")  
Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
    For i = 0 To colDrives.Count - 1 Step 1
        If colDrives(i)=DriveLetter & ":" Then  
            If Debug Then wscript.echo """" & colDrives(i) & """ ist """ & colDrives(i+1) & """"  
            strUncPfad=colDrives(i+1)
        End If
    Next
End If
Set WshNetwork = nothing
Set coldrives = nothing
If (len( strUncPfad) = 0) Then
    strUncPfad=DriveLetter & ":"   
Else 
    If Debug Then wscript.echo "UNC-Pfad: [" & strUncPfad &"]"   
End If
strPath = strUncPfad & Path
If Debug Then wscript.echo "strUncPfad + Path: [" & strPfad & "]"   

If CanChoose Then
    '# Auswahlbox anzeigen  
    Result = MsgBox ("In Outlook kopieren?", vbYesNo, "Outlook Abfrage")  

    Select Case Result
    Case vbYes
        CopyToClip = False
        If Debug Then wscript.echo "CopyToClip = False"  
    Case vbNo
        CopyToClip = True
        If Debug Then wscript.echo "CopyToClip = True"  
    End Select
End If

If Not CopyToClip Then
    '# Link an Outlook übergeben    
    Set OutlookApp = CreateObject ("Outlook.Application")  
    Set Mail = OutlookApp.CreateItem(0)
    Mail.Display
    with Mail
        .HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strPath & "</A> </BODY></HTML>" & Mail.HTMLBody  
    End with
Else
    '# Link in Zwischenablage kopieren  
    Set ClipExists = False
    If CreateObject("Scripting.FileSystemObject").FileExists(CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe") Then  
        If Debug Then wscript.echo "Clip.exe ist in """ & CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe"", vorhanden."  
        ClipExists = True
    Else
        If Debug Then wscript.echo "Clip.exe fehlt. Es wird versucht die Clip.exe von, """ & strClipPath & """ nach, """ & CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe"", zu kopieren."  
        CreateObject("Scripting.FileSystemObject").Copyfile strClipPath, CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe"  
        
        If CreateObject("Scripting.FileSystemObject").FileExists(CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe") Then  
            If Debug Then wscript.echo "Clip.exe erfolgreich kopiert!"  
            ClipExists = True
        Else
            If Debug Then wscript.echo "Clip.exe konnte nicht kopiert werden!"  
        End If
    End If
    'Link in Zwischenablage kopieren  
    If ClipExists Then CreateObject("WScript.Shell").Run "cmd /c <nul set /p""=" & strPath & """|" & CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Clip.exe",0  
End If

Das Script funktioniert einwandfrei.

MfG, FireEmerald

Edit:

Hatte eine Kleinigkeit in dem anderen Thread übersehen, wo ich den Grundbaustein für das Script her hatte^^

kompletten Dateipfad von Netzlaufwerk an Outlook übergeben

Content-Key: 217908

Url: https://administrator.de/contentid/217908

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: Penny.Cilin
Penny.Cilin 26.09.2013 aktualisiert um 11:07:12 Uhr
Goto Top
Moin,

wie wäre es, wenn Du auf der Eingabeaufforderung einfach
net use 
eingibst?
Oder ggf.
net use > %temp%\liste.txt


Gruss Penny.
Mitglied: FireEmerald
FireEmerald 26.09.2013 aktualisiert um 12:00:30 Uhr
Goto Top
Du meinst an stelle von WshNetwork = Wscript.CreateObject("Wscript.Network") usw. ? Das liegt schlicht daran, weil ich diesen Abschnitt kopiert hatte und eigentlich nicht allzu viel Zeit dort investieren wollte. Wenn es funktioniert, funktioniert es.

Aktuell verstehe ich eher nicht warum er mir bei diesem RegFile den Wert nicht einträgt...

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen]
[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen\command]
@="wscript \\Blub01\Blob\Ordner845\Path.vbs \"%1\""


Kann mir jemand erklären wieso? Das ist doch nur ein ganz normaler Eintrag...

Edit:

Ok, das Problem habe ich auch behoben. Es scheint so, als müsste man für den Registry Editor beim zusammenführen alle Leerzeichen und Zahlen(?) mit einem nachfolgenden \ kennzeichnen.

Sprich möchtest du ein \ in die Registry eintragen, so musst du dieses mit einem weiteren \ hinter dem ersten als solchen kennzeichnen. Weil sonst der Registry Editor meint du wolltest mit dem einzelnen \ ein vorangegangenes Leerzeichen oder Zahl(?) einfügen.

Wer's braucht:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\Shell\Link zu Datei kopieren] 
[HKEY_CLASSES_ROOT\*\Shell\Link zu Datei kopieren\command] 
@="wscript \\\\server-blub\\bla\\Datei.vbs \"%1\""  

[HKEY_CLASSES_ROOT\Folder\Shell\Link zu Ordner kopieren] 
[HKEY_CLASSES_ROOT\Folder\Shell\Link zu Ordner kopieren\command] 
@="wscript \\\\server-blub\\bla\\Datei.vbs \"%1\""