Verknüpfung mit UNC-Pfad erstellen

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
derschotte
Junior Member
Junior Member
Posts: 5
Joined: 2011-05-05, 14:41 UTC

Verknüpfung mit UNC-Pfad erstellen

Post by *derschotte »

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
User avatar
Lefteous
Power Member
Power Member
Posts: 9537
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

Welche Art von Verknüpfung ist denn gemeint? Normale LNK-Dateien lassen sich ja auch auf Basis von UNC-Pfaden problemlos über cm_CreateShortcut (standardmäßig Str+Umschalt+F5) erstellen.
derschotte
Junior Member
Junior Member
Posts: 5
Joined: 2011-05-05, 14:41 UTC

Post by *derschotte »

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
User avatar
Lefteous
Power Member
Power Member
Posts: 9537
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

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.
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

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

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
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: cm_CreateShortcut with UNC path

Post by *Stefan2 »

Oder mittels PowerShell :wink:


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.
derschotte
Junior Member
Junior Member
Posts: 5
Joined: 2011-05-05, 14:41 UTC

Post by *derschotte »

@ Stefan
FANTASISTISCH!!! Macht was es soll! Danke Dir!!

Jetzt muss ich nur noch deinen Namen ersetzen :mrgreen: Spass!! Ehre, wem Ehre gebührt!!
Post Reply