IP-Adresse anstatt Rechnername ins Clipboard

German support forum

Moderators: white, Hacker, Stefan2

gogis
Junior Member
Junior Member
Posts: 39
Joined: 2013-07-12, 07:45 UTC

Post by *gogis »

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 :lol:

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.
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Einer meiner liebsten Befehle:

cm_CopyNetNamesToClip

Gruss maat
gogis
Junior Member
Junior Member
Posts: 39
Joined: 2013-07-12, 07:45 UTC

Post by *gogis »

Ja, den Befehl kenne ich, aber: [cm_CopyNetNamesToClip] stellt dem der Datei Pfad plus Laufwerksbuchstaben voran und eben nicht wie gewünscht die IP Adresse.
User avatar
ZoSTeR
Power Member
Power Member
Posts: 1014
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Verwendest Du den Befehl auf gemappten Laufwerken? Selbst da wird aber der UNC Name des Servers verwendet und nicht der Laufwerksbuchstabe...
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Korrekt.

Aber er will ja die IP mit drin haben, mir ist da kein TC-Weg bekannt.
Aber scrippten kann man das vielleicht, ich nicht.

Gruss maat
#101512
User avatar
Stefan2
Power Member
Power Member
Posts: 4159
Joined: 2007-09-13, 22:20 UTC
Location: Europa

VBScript: _ForEachSelFileDo - CopyWithIPAddress.vbs UNC

Post by *Stefan2 »

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?
gogis
Junior Member
Junior Member
Posts: 39
Joined: 2013-07-12, 07:45 UTC

Post by *gogis »

Wow - und vielen Dank für Deine Arbeit :D ,

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

Post by *ZoSTeR »

Wieso "C:\Users..." ??? Dies ist ein lokaler Pfad, der nicht in eine IP Adresse umgewandelt werden kann, zumindest nicht zuverlässig.
Was genau erwartest Du?
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Wieso "C:\Users..." ??? Dies ist ein lokaler Pfad, der nicht in eine IP Adresse umgewandelt werden kann, zumindest nicht zuverlässig.
Geht doch: \\127.0.0.1\c$\users\ :wink:

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 (Si­sy­phus­-)Ar­beit jedem Device eine statische IP Adresse einzuimpfen)?

Gruss
Holger
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Wenn ich eine Freigabe auf einen Ordner habe und dann copynetnamestoclip mache, hat TC trotzdem nur den lokalen Pfad kopiert.

Nicht das ich es bräuchte, aber sollte hier nicht der Freigabepfad kopiert werden, so wie er auch vom Netzwerk aus zu erreichen ist?

Gruss maat
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Wo machst du das denn:
Aus dem lokalen Ordner heraus den du freigegeben hast, oder von einem anderen Rechner aus auf dem du diesen freigegebenen Ordner als Laufwerk(buchstaben) gemountet hast.
Letzteres sollte funktionieren.

Gruss
Holger
Make our planet great again
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Letzteres funktioniert, nutze ich zig mal am Tag.

Ersteres nicht, brauch ich auch nicht, interessiert mich nur warum das nicht geht.
Eine Freigabe ist ja im Netzwerk verfügbar, warum sollte nicht ein lokales copynetnamestoclip zum selben Ergebnis führen wie aus dem Netzwerk heraus.

Gruss maat
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

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?

:wink:
Holger
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Post by *matixx »

Dieses Problem würde doch dann auch auf einem echtem Netzwerkpfad bestehen. Da liefert copynetnamestoclip aber den Netzpfad.
gogis
Junior Member
Junior Member
Posts: 39
Joined: 2013-07-12, 07:45 UTC

Post by *gogis »

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.
Post Reply