Verknüpfung mit UNC-Pfad erstellen
Moderators: Hacker, Stefan2, white
-
- Junior Member
- Posts: 5
- Joined: 2011-05-05, 14:41 UTC
Verknüpfung mit UNC-Pfad erstellen
Hallole,
den Befehl zum Kopieren des UNC-Pfades in die Zwischenablage habe ich bereits in Verwendung >> für Outlook ok.
Jetzt möchte ich aber gern Verknüpfungen anlegen die dann auch direkt den UNC-Pfad enthalten.
Gibt es hier ein Möglichkeit?
Die Kommandos an sich lassen sich ja nicht kombinieren?
Gruß
Rico
den Befehl zum Kopieren des UNC-Pfades in die Zwischenablage habe ich bereits in Verwendung >> für Outlook ok.
Jetzt möchte ich aber gern Verknüpfungen anlegen die dann auch direkt den UNC-Pfad enthalten.
Gibt es hier ein Möglichkeit?
Die Kommandos an sich lassen sich ja nicht kombinieren?
Gruß
Rico
-
- Junior Member
- Posts: 5
- Joined: 2011-05-05, 14:41 UTC
Hallo,
cm_CreateShortcut erzeugt mir einen Link auf Basis des Netzlaufwerkes, z.B. k:\regal\buch.lnk
Benötigt wird allerdings eine Verknüpfung in der Form: \\buchladen\regal\buch.lnk
Kommt daher, das je nach Abteilung die Laufwerksbuchstaben vom Projektlaufwerk aus anders belegt sind. Um einzelne Infos wieder zu finden, erzeugen wir eine Verknüpfung und kopieren diese dann um keine Redunanzen zu erzeugen. In der Abteilung funktioniert das wunderbar, nicht aber im ganzen Unternehmen, da eben unterschiedliche Laufwerksbuchstaben.
Gruß
Rico
cm_CreateShortcut erzeugt mir einen Link auf Basis des Netzlaufwerkes, z.B. k:\regal\buch.lnk
Benötigt wird allerdings eine Verknüpfung in der Form: \\buchladen\regal\buch.lnk
Kommt daher, das je nach Abteilung die Laufwerksbuchstaben vom Projektlaufwerk aus anders belegt sind. Um einzelne Infos wieder zu finden, erzeugen wir eine Verknüpfung und kopieren diese dann um keine Redunanzen zu erzeugen. In der Abteilung funktioniert das wunderbar, nicht aber im ganzen Unternehmen, da eben unterschiedliche Laufwerksbuchstaben.
Gruß
Rico
Verstehe - es gibt verschiedene Lösungsansätze:
1. Du navigierst über die Netzwerkumgebung in TC zu dem UNC-Pfad und erstellt von dort aus die Verknüpfung.
2. Du erstellt die Verknüpfung für den Netzwerklaufwerkpfad, kopierst den UNC-Pfad mit cm_CopyNetNamesToClip und fügst ihn dann in den Eigenschaften der Verknüpfung ein.
Eine Option den UNC-Pfad eines Netzwerklaufwerks direkt bei der Erstellung zu verwenden, kenne ich nicht.
1. Du navigierst über die Netzwerkumgebung in TC zu dem UNC-Pfad und erstellt von dort aus die Verknüpfung.
2. Du erstellt die Verknüpfung für den Netzwerklaufwerkpfad, kopierst den UNC-Pfad mit cm_CopyNetNamesToClip und fügst ihn dann in den Eigenschaften der Verknüpfung ein.
Eine Option den UNC-Pfad eines Netzwerklaufwerks direkt bei der Erstellung zu verwenden, kenne ich nicht.
Hab sowas mal in AutoIt für Links in Lotus Notes gebaut.
Die entscheidene Funktion ist "DriveMapGet"
Das Programm erzeugt aus dem als Parameter übergebenen lokal gemappten Pfad eine file: URL mit aufgelöstem UNC-Pfad.
zb N:\Netzlaufwerk\Datei.txt -> file://\\Server01\Netzlaufwerk\Datei.txt
Die entscheidene Funktion ist "DriveMapGet"
Das Programm erzeugt aus dem als Parameter übergebenen lokal gemappten Pfad eine file: URL mit aufgelöstem UNC-Pfad.
zb N:\Netzlaufwerk\Datei.txt -> file://\\Server01\Netzlaufwerk\Datei.txt
Code: Select all
Dim $Output
Dim $i
Dim $aNetdir
Dim $PathParam
For $i = 1 To $cmdLine[0]
If DriveMapGet(StringLeft($cmdLine[$i], 2)) Then
$aNetdir = DriveMapGet(StringLeft($cmdLine[$i], 2))
$PathParam = $aNetdir & StringMid($cmdLine[$i], 3)
Else
;Bereits UNC oder lokales Laufwerk
$PathParam = $cmdLine[$i]
EndIf
$Output = $Output & "file://" & $PathParam & @CRLF
Next
; URL encoden..
$Output = __EncodeURL($Output)
ClipPut($Output)
MsgBox(0, "Link4Notes", "Die folgende Verknüpfung wurde in die Zwischenablage kopiert:" & @CRLF & @CRLF & $Output)
;=== FUNCs ===
Func __EncodeURL($prm_string)
Local $final_String
For $i = 1 To StringLen($prm_string)
$cur_Char = StringMid($prm_string, $i, 1)
Switch Asc($cur_Char)
Case 32
$cur_Char = "%" & Hex(Asc($cur_Char), 2)
Case 128 To 255
$cur_Char = "%" & Hex(Asc($cur_Char), 2)
EndSwitch
$final_String &= $cur_Char
Next
Return $final_String
EndFunc ;==>__EncodeURL
PowerShell: cm_CreateShortcut with UNC path
Oder mittels PowerShell
Kannst du bitte mal probieren ob dies hierbei dir funktioklappt?
Create Total Commander Button
Command: PowerShell
Argument: [face=timesnewroman]D:\rive\Path\to\Create-UNCShortcut.ps1 """%P%N""" """%T"""[/face]
Create-UNCShortcut.ps1
EDIT: ToDo: TEST
usercmd.ini
[em_CreateShortcutUNC]
Command : PowerShell
Argument: $CI="""%P%N""";$CD=Split-Path $CI -Qualif;$LC=GWMI Win32_LogicalDisk -Filt "DriveType=4 AND DeviceID='$CD'";$OP=$CI.Replace($CD, $LC.ProviderName);If ($OP[1]-ne'\'){$OP=$CI};$SN=Split-Path $CI -Leaf;$SF="""%T""";$WS=New-Object -com "Wscript.Shell";$oS=$WS.CreateShortcut($SF+"\$SN.lnk");$oS.TargetPath=$OP;$oS.Save();

derschotte wrote:cm_CreateShortcut erzeugt mir einen Link auf Basis des Netzlaufwerkes, z.B.
k:\regal\buch.lnk
Benötigt wird allerdings eine Verknüpfung in der UNC Form:
\\buchladen\regal\buch.lnk
Kannst du bitte mal probieren ob dies hierbei dir funktioklappt?
Create Total Commander Button
Command: PowerShell
Argument: [face=timesnewroman]D:\rive\Path\to\Create-UNCShortcut.ps1 """%P%N""" """%T"""[/face]
Create-UNCShortcut.ps1
Code: Select all
# Create-UNCShortcut.ps1
# Create Shortcut with UNC path "\\server\share" instead of mapped drive letter "D:\rive\folder"
# Stefan, v0.001, 2015-01-14
# http://ghisler.ch/board/viewtopic.php?t=41641
#
#
# Total Commander Button code:
# Command : PowerShell
# Argument: D:\rive\path\to\Create-UNCShortcut.ps1 """%P%N""" """%T"""
#
#
# Get-UNCPath.ps1
# Get UNC path of current working dir "\\server\share" instead of mapped drive letter "D:\rive\folder"
$curITEM = $args[0] # due to TC's 1st param """%P%N""" ==> current focused ITEM in TC
$currDRV = Split-Path -Path $curITEM -Qualifier
$locDISK = Get-WmiObject Win32_LogicalDisk -Filter "DriveType = 4 AND DeviceID = '$currDRV'"
$outPATH = $curITEM.Replace($currDRV, $locDISK.ProviderName) # will drop here the drive letter anyway
If ($outPATH[1] -ne '\'){$outPATH = $curITEM} # check 2nd sign for "\\server\share" or "\rive\folder"
#
# CreateShortcut $ShCutName in $strFolder , pointing to $outPATH:
$ShCutName = Split-Path -Path $curITEM -Leaf
$strFolder = $args[1] # due to TC's 2nd param """%T""" ==> current TARGET path in TC
$objShell = New-Object -com "Wscript.Shell"
$objShCut = $objShell.CreateShortcut($strFolder + "\$ShCutName.lnk")
$objShCut.TargetPath = $outPATH
$objShCut.Save()
EDIT: ToDo: TEST
usercmd.ini
[em_CreateShortcutUNC]
Command : PowerShell
Argument: $CI="""%P%N""";$CD=Split-Path $CI -Qualif;$LC=GWMI Win32_LogicalDisk -Filt "DriveType=4 AND DeviceID='$CD'";$OP=$CI.Replace($CD, $LC.ProviderName);If ($OP[1]-ne'\'){$OP=$CI};$SN=Split-Path $CI -Leaf;$SF="""%T""";$WS=New-Object -com "Wscript.Shell";$oS=$WS.CreateShortcut($SF+"\$SN.lnk");$oS.TargetPath=$OP;$oS.Save();
Last edited by Stefan2 on 2015-01-14, 19:12 UTC, edited 1 time in total.
-
- Junior Member
- Posts: 5
- Joined: 2011-05-05, 14:41 UTC