Sie müssen einen SMB-Pfad in einen UNC-Pfad automatisieren, bevor Sie ihn an Win10-Clients senden

Neu hier, aber ich habe Schwierigkeiten, ein AppleScript zusammenzustellen, das im Grunde genommen einen SMB-Link nimmt und ihn in einen UNC-Link umwandelt, bevor ich ihn an ein paar Win10-Clients sende.

Alle dasselbe Netzwerk, wir verwenden alle ein SNS NAS und es ist für Adobe Premiere-Links. Wir können das alles manuell machen, aber die Redakteure haben keine Zeit/Geduld, jeden Link umzuwandeln. Wir suchen nach einem automatisierten Skript, das wir als Dienst integrieren könnten, der ausgewählten Text konvertiert.

Ich habe den folgenden Artikel gefunden, aber es ist das Gegenteil von dem, wonach wir suchen. Ich habe versucht, alle Funktionen darin umzukehren, konnte es aber nicht richtig zum Laufen bringen.

https://gist.github.com/anonymous/2211017

Es wäre auch großartig, wenn der erstellte „Dienst“ den Eintrag einfach in die Zwischenablage kopieren würde, sodass der Endbenutzer ihn in ein paar verschiedene Dinge wie E-Mail und Slack-Messenger einfügen kann.

Hoffentlich kann mir jemand helfen oder mich in die richtige Richtung lenken. Ich habe ungefähr eine Woche lang Google danach durchforstet.

BEARBEITEN ** Beispiele unten

Alter Pfad 'smb://server/folder'

Neuer Pfad '\\Server\Ordner'

Ich habe meine ursprüngliche Antwort nach einigen Kommentaren von klanomath gelöscht, weil es zu der Zeit spät war und ich schlafen musste. Ich habe eine Einschränkung hinzugefügt, die Notiz oben in meiner Antwort, und sie wiederhergestellt. Hoffentlich deckt es als Beispiel Ihre Bedürfnisse ab, aber wenn Sie mehr als das brauchen, dann undatieren Sie Ihre Frage entsprechend und wenn Sie zusätzliche Hilfe bei der Codierung benötigen, werde ich sehen, was ich für Sie tun kann.

Antworten (2)

Vielleicht etwas spät zur Party, aber wir verwenden dafür eine Drittanbieter-App bei der Arbeit

Linkkonverter

funktioniert ziemlich gut, vor allem, dass Sie mit der rechten Maustaste auf eine beliebige Datei auf einem UNC-Laufwerk klicken und den Pfadnamen kopieren können, um das Windows-Ergebnis zu erhalten

HINWEIS: Diese Antwort ist nur als Beispiel gedacht, wenn der SMB-Pfad außer Doppelpunkt, Schrägstrichen und Backslashes und ohne Leerzeichen nur alphanumerische Zeichen im Namen enthält! Wenn Sie etwas anderes berücksichtigen müssen, dh die Kommentare zu dieser Antwort lesen, müssen Sie den Code entsprechend Ihren Anforderungen ändern. Allerdings habe ich in all meinen Jahren als Netzwerksystemadministrator und Netzwerksystemingenieur nie Freigaben erstellt, die Leerzeichen oder andere als die Notwendigkeit von Doppelpunkten, Schrägstrichen, umgekehrten Schrägstrichen und alphanumerischen Zeichen enthalten, und daher ist dieses einfache Beispiel alles, was ich brauche Übersetzen Sie jeden, zB smb://server/folderin \\server\folder, SMB-Pfad, den ich jemals verwendet habe, in einen UNC-Pfad. YMMV!


Erstellen Sie in Automator einen neuen Service- Workflow und fügen Sie ihm dann eine Run AppleScript- Aktion hinzu, während Sie den Standard- AppleScript- Code durch den folgenden Code ersetzen :

on searchReplace(theText, SearchString, ReplaceString)
    set OldDelims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to SearchString
    set newText to text items of theText
    set AppleScript's text item delimiters to ReplaceString
    set newText to newText as text
    set AppleScript's text item delimiters to OldDelims
    return newText
end searchReplace

on run {input, parameters}
    set selectedText to item 1 of input as string
    set convertedText to searchReplace(selectedText, "smb://", "\\\\")
    set convertedText to searchReplace(convertedText, "/", "\\")
    set the clipboard to convertedText as string
    return convertedText
end run

Speichern Sie dann den Dienst als: SMB-Pfad in UNC-Pfad konvertieren

Jetzt wird „SMB-Pfad in UNC-Pfad konvertieren“ im Menü „Dienste “ oder im Kontextmenü „ Dienste “ angezeigt , wenn Text ausgewählt ist , und wenn der Dienst verwendet wird, wird der UNC-Pfad in die Zwischenablage eingefügt . (Dies setzt natürlich voraus, dass es sich bei dem ausgewählten Text tatsächlich um einen SMB-Pfad handelt . Andernfalls wird dort genau der Text platziert, der beim Ausführen des Dienstes ausgewählt wurde , einschließlich aller vorgenommenen Ersetzungen.)

Der Beispiel- SMB-Pfad smb://server/folder wird in einen UNC-Pfad \\server\folder konvertiert und in die Zwischenablage eingefügt .

Hinweis: Beachten Sie die Einstellungen des Dienstes im Bild unten. Das Kontrollkästchen Ausgabe ersetzt ausgewählten Text ist deaktiviert. Sie können es ankreuzen, wenn Sie das möchten, aber wenn der ausgewählte Text tatsächlich nicht ersetzbar ist, wird der Dienst nicht im Dienste- Menü oder Dienste- Kontextmenü angezeigt .

Konvertieren Sie den SMB-Pfad in den UNC-Pfad-Automator-Dienst

Was passiert, wenn der SMB-Pfad Leerzeichen oder \ Escape-Leerzeichen enthält?
@klanomath, hatte nicht darüber nachgedacht! Ich denke, die erste Substitution könnte sein set convertedText to searchReplace(selectedText, "\\", ""), die alle Backslashes entfernt, und daher gehe ich davon aus, dass ein Escape-Leerzeichen behandelt wird. Können UNC-Pfade Leerzeichen enthalten? Wenn ja, sollte ein UNC-Pfad mit Leerzeichen angegeben werden?
AFAIK UNC-Pfade mit Leerzeichen sollten in Windows in Anführungszeichen gesetzt werden . Es wird wahrscheinlich nicht funktionieren, ihnen oder einem %20 zu entkommen
@klanomath, also sollte ich den vorgeschlagenen Code meines ersten Kommentars hinzufügen und dann den , convertedTextder der UNC-Pfad sein wird, in die Zwischenablage legen und ihn zitieren lassen, ob er Leerzeichen hat oder nicht, wäre immer noch in Ordnung zitiert? Ich kann im Moment nicht testen und warum ich um Ihre Eingabe bitte. Danke.
Hmm, es ist OK, aber hässlich. Ich empfehle auch, eine Warnung zu posten, wenn der POSIX-Pfad <>|?*".
Ihr rockt, wir werden heute und morgen damit herumspielen! Danke!!