IP-Adresse anstatt Rechnername ins Clipboard
Moderators: white, Hacker, Stefan2
Hi,
ich benötige diese Funktionalität ziemlich oft, allerdings möchte ich nicht jedesmal über die Netzwerkumgebung gehen und da dieser Thread aus 2008 stammt gibt es bestimmt ein Update
Was ich mir wünsche ist ein Button, welcher mir alle selektierten Dateien/Verzeichnisse mit vollständigem Netzwerkpfad (mit IP-Adresse vorneweg), in die Zwischenablage übernimmt.
Gibt es da einen Workaround, Script, Plugin etc. welcher dies ermöglicht?
ich benötige diese Funktionalität ziemlich oft, allerdings möchte ich nicht jedesmal über die Netzwerkumgebung gehen und da dieser Thread aus 2008 stammt gibt es bestimmt ein Update
Was ich mir wünsche ist ein Button, welcher mir alle selektierten Dateien/Verzeichnisse mit vollständigem Netzwerkpfad (mit IP-Adresse vorneweg), in die Zwischenablage übernimmt.
Gibt es da einen Workaround, Script, Plugin etc. welcher dies ermöglicht?
Last edited by gogis on 2016-02-19, 10:50 UTC, edited 1 time in total.
VBScript: _ForEachSelFileDo - CopyWithIPAddress.vbs UNC
gogis wrote:Was ich mir wünsche ist ein Button,
welcher mir alle selektierten Dateien/Verzeichnisse
mit vollständigem Netzwerkpfad (mit IP-Adresse vorneweg),
in die Zwischenablage übernimmt.
Zum Beispiel so.
Purpose:
Copy selected name to clipboard, change "Drive letter:" to "IP address\share"
Example:
If "\\10.11.12.13\share_SW" is mapped as drive W:
cm_CopyFullNamesToClip: W:\TOOLs\Notepad2\Notepad2.exe
cm_CopyNetNamesToClip: \\server.name.tld\share_SW\TOOLs\Notepad2\Notepad2.exe
cm_CopyNetIPAddrToClip: \\10.11.12.13\share_SW\TOOLs\Notepad2\Notepad2.exe <<<< Script result
Changed "W:" to "\\10.11.12.13\share_SW"
TC Button:
CMD: "D:\rive\path\to\this\script.vbs"
PARAM: "%L"
USAGE: Select your files, execute this script... done.
Code: Select all
'// ===========================================================
'// VBScript for Total Commander, by Stefan
'// cm_CopyNetIPToClip.VBS, v00.1, 2016-02-19
'// Forum: http://ghisler.ch/board/viewtopic.php?t=20044 (IP-Adresse anstatt Rechnername in Netzwerkumgebung)
'// Purpose: Copy selected name to clipboard, change "Drive letter:" to "IP address\share"
'// Example: If "\\10.11.12.13\share_SW" is mapped as drive W:
'// cm_CopyFullNamesToClip: W:\TOOLs\Notepad2\Notepad2.exe
'// cm_CopyNetNamesToClip: \\server.name.tld\share_SW\TOOLs\Notepad2\Notepad2.exe
'// Script result:
'// cm_CopyNetIPToClip: \\10.11.12.13\share_SW\TOOLs\Notepad2\Notepad2.exe
'//
'// TC Button:
'// CMD: "D:\rive\path\to\this\script.vbs"
'// PARAM: "%L"
'// USAGE: Select your files, execute this script... done.
'// ===========================================================
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSO = CreateObject("WScript.Shell")
Set NET = CreateObject("WScript.Network")
'// =========================================================== Read TCs temp list:
sTCtempList = Wscript.arguments.Item(0) ' The TC temp file due the "%L"
If FSO.FileExists(sTCtempList) Then
Set oTextStream = FSO.OpenTextFile(sTCtempList,1) 'FORREADING = 1
sFileContent = oTextStream.ReadAll
oTextStream.Close
aLineArray = split(sFileContent,vbCRLF)
'// =================== Get first line to do basic things one time only:
sFirstLine = aLineArray(0)
If(InStr(sFirstLine,":")) Then sDriveLetter = Left(sFirstLine,2)
sShareName = GetUNCName(sDriveLetter)
sServerName = Split(sShareName, "")(2)
sIPAddress = GetServerIP(sServerName)
sShareWithIP = replace(sShareName, sServerName, sIPAddress)
'// =================== For each line in TCs temp list, Do your work:
For i=0 To UBound(aLineArray) -1
sFullName = aLineArray(i)
'sTemp = sTemp & sFullName & vbCRLF ' test output original string
sOUT = sOUT & replace(sFullName,sDriveLetter,sShareWithIP) & vbCRLF
Next
Else
MsgBox "Input file sTCtempList not found."
End If
'// =========================================================== Output the result:
sOUT = Left(sOUT, Len(sOUT)-2) '//removing trailing line break:
' SetClipboard sTemp & vbCR & sOUT ' test output
SetClipboard sOUT
'// =========================================================== HELPER FUNCTIONs
Function GetUNCName(sDriveLetter)
On Error Resume Next
Set cDriveColl = NET.EnumNetworkDrives()
GetUNCName = sDriveLetter
For iDrive = 0 To cDriveColl.Count - 1 Step 2
If cDriveColl.Item(iDrive) = sDriveLetter Then
GetUNCName = cDriveColl.Item(iDrive+1)
End If
Next
End Function
Function GetServerIP(sServerName)
On Error Resume Next
Set oExec = WSO.Exec("ping -n 1 " & sServerName)
sStdOutRes = oExec.StdOut.ReadLine ' commands' first line is blank
sStdOutRes = oExec.StdOut.ReadLine
If(sStdOutRes<>"") Then
iPosS = InStr(sStdOutRes,"[")
iPosE = InStr(sStdOutRes,"]")
GetServerIP = mid(sStdOutRes,iPosS+1, iPosE-iPosS -1)
If(GetServerIP="") Then GetServerIP = "Error-2"
Else
GetServerIP = "Error-1"
End If
End Function
Function SetClipboard(stringToClipboard)
On Error Resume Next
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Navigate("about:blank")
oIE.document.parentwindow.clipboardData.SetData "text", stringToClipboard
oIE.Quit
End Function
'// =========================================================== Results examples:
'// RESULTs:
'// RESULT of sTemp:
'// W:\TOOLs\Notepad2\Notepad2.exe
'// W:\TOOLs\Notepad2\Notepad2.ini
'// RESULT of sOUT:
'// \\10.11.12.13\share_SW\TOOLs\Notepad2\Notepad2.exe
'// \\10.11.12.13\share_SW\TOOLs\Notepad2\Notepad2.ini
'// =========================================================== END
HTH?
Wow - und vielen Dank für Deine Arbeit ,
aber leider funktioniert das VBS-Skript nicht wie vorgesehen.
Es werden zwar die Dateien mit Pfad übernommen, aber auch mit dem VBS-Script wird stets der Laufwerksbuchstabe und nicht die IP Adresse vorangestellt.
Wenn ich das Skript per Button-Bar aufrufe passiert folgendes:
1. Ich wähle im TC Dateien und Verzeichnisse aus
2. Starte das Skript über die Button-Bar
3. Ich erhalte einen Prompt vom IE: „Do you want to allow this webpage to access your clipboard“
4. Ich bestätige dies mit “Allow access”
5. Anschließend ‚paste‘ ich den Inhalt des Clipboards in z.B. Notepad
6. Die in 1. selektierten Dateien/Verzeichnisse werden zwar mit vollem Pfad (also z.B. : C:\Users\...\Datei1.txt , ... etc) aber auch mit dem Laufwerksbuchstaben und nicht mit IP-Adresse in Notebook kopiert.
Mein System:
Windows 8.1 64bit, unterwegs mit Adminrechten, TC 8.52 (32bit)
Der Parameter "%L" wird im TC mit Anführungszeichen "" übergeben
Any ideas?, bzw was mache ich falsch???
aber leider funktioniert das VBS-Skript nicht wie vorgesehen.
Es werden zwar die Dateien mit Pfad übernommen, aber auch mit dem VBS-Script wird stets der Laufwerksbuchstabe und nicht die IP Adresse vorangestellt.
Wenn ich das Skript per Button-Bar aufrufe passiert folgendes:
1. Ich wähle im TC Dateien und Verzeichnisse aus
2. Starte das Skript über die Button-Bar
3. Ich erhalte einen Prompt vom IE: „Do you want to allow this webpage to access your clipboard“
4. Ich bestätige dies mit “Allow access”
5. Anschließend ‚paste‘ ich den Inhalt des Clipboards in z.B. Notepad
6. Die in 1. selektierten Dateien/Verzeichnisse werden zwar mit vollem Pfad (also z.B. : C:\Users\...\Datei1.txt , ... etc) aber auch mit dem Laufwerksbuchstaben und nicht mit IP-Adresse in Notebook kopiert.
Mein System:
Windows 8.1 64bit, unterwegs mit Adminrechten, TC 8.52 (32bit)
Der Parameter "%L" wird im TC mit Anführungszeichen "" übergeben
Any ideas?, bzw was mache ich falsch???
Geht doch: \\127.0.0.1\c$\users\Wieso "C:\Users..." ??? Dies ist ein lokaler Pfad, der nicht in eine IP Adresse umgewandelt werden kann, zumindest nicht zuverlässig.
Würde mich allerdings auch mal interessieren wofür hier unbedingt eine IP Adresse benötigt wird, alldieweil diese in Netzwerken selten dauerhaft bestimmten Rechnern zugeordnet bleiben (ausser man hat keinen DHCP Server im Netzwerk und macht sich dann die (Sisyphus-)Arbeit jedem Device eine statische IP Adresse einzuimpfen)?
Gruss
Holger
Erscheint zuerst logisch, allerdings hat das auch seine Fallstricke:
Befindet sich der freigegebene Ordner unterhalb eines anderen Ordner der ebenfalls freigegeben ist (z.B. mit anderen Berechtigungen), dann gäbe es zwei verschiedene UNC-Pfade zu diesem freigegebenen Ordner.
Welches Schweinderl hatten sie den gerne?
Holger
Befindet sich der freigegebene Ordner unterhalb eines anderen Ordner der ebenfalls freigegeben ist (z.B. mit anderen Berechtigungen), dann gäbe es zwei verschiedene UNC-Pfade zu diesem freigegebenen Ordner.
Welches Schweinderl hatten sie den gerne?
Holger
Da hier nach der Sinnhaftigkeit gefragt wurde, möchte ich dies wie folgt beantworten:
Wir haben in der Firma einen ganzen Zoo an VMs, welche über ESX-Server bereitgestellt werden. Ich arbeite sowohl auf meinem lokalen Rechner, als auch mit verschiedenen VMs parallel und möchte wechselseitig von einer Maschine auf entfernte Dateien und Verzeichnisse zugreifen. Hierbei funktioniert der Zugriff per IP-Adresse am unkompliziertesten.
Ein Umweg wäre über die TC Netzwerk-Umgebung zu gehen, aber sobald sich die Datei in den Tiefen des Dateisystems befindet sind viele Klicks notwendig.
Das heißt, ich möchte z.B. von meinem lokalen PC den Netzwerknamen mit vorangestellter IP Adresse ermitteln um diesen z.B. in einem Testscript eines entfernten PC in derselben Sitzung zu verwenden.
Wir haben in der Firma einen ganzen Zoo an VMs, welche über ESX-Server bereitgestellt werden. Ich arbeite sowohl auf meinem lokalen Rechner, als auch mit verschiedenen VMs parallel und möchte wechselseitig von einer Maschine auf entfernte Dateien und Verzeichnisse zugreifen. Hierbei funktioniert der Zugriff per IP-Adresse am unkompliziertesten.
Ein Umweg wäre über die TC Netzwerk-Umgebung zu gehen, aber sobald sich die Datei in den Tiefen des Dateisystems befindet sind viele Klicks notwendig.
Das heißt, ich möchte z.B. von meinem lokalen PC den Netzwerknamen mit vorangestellter IP Adresse ermitteln um diesen z.B. in einem Testscript eines entfernten PC in derselben Sitzung zu verwenden.