3 votes

Comment puis-je copier le lien smb:// complet d'un fichier dans le Finder ?

Je travaille dans un environnement Windows avec de nombreux disques partagés différents. J'ai souvent des fenêtres Finder ouvertes sur différents lecteurs partagés et dossiers imbriqués. J'ai mis en place un service (que j'ai créé dans Automator) qui me permet de contrôler-cliquer et de "copier le chemin complet" d'un fichier ou d'un dossier que j'ai sélectionné dans le Finder.

Ce que j'obtiens ressemble à quelque chose comme :

/Volumes/someFolder/someFile.docx

Cependant, si je sélectionne cet élément dans le Finder et que je fais command-i, j'obtiens l'intégralité des données suivantes smb:// qui comprend également le nom du serveur. Je voudrais copier ceci, de manière à ce que cela ressemble à :

smb://Server/someParentFolder/someFolder/someFile.docx

Comment puis-je créer un service dans Automator qui va copier l'ensemble de la smb:// le chemin d'accès réseau au fichier sélectionné au lieu de celui qui est signalé comme étant le chemin complet ?

Si Automator ne veut pas copier le smb:// le chemin du réseau, y a-t-il un autre moyen de créer un utilitaire qui fasse cela ?

0 votes

@anthonyg Ce n'est pas un doublon. Je n'essaie pas de créer des chemins de partage SMB de style Windows qui se lancent correctement. Je veux le chemin de partage SMB de style OS X. J'ai trouvé l'autre message utile pour un autre problème, cependant.

0 votes

Il y a une option dans WinShortcutter pour copier le chemin soit à la manière de Windows, soit à la manière de OS X (barres obliques avant ou arrière) - je ne suis pas sûr que cela fasse ce que vous voulez.

2voto

Artem Points 1620

Vous pouvez cliquer avec le bouton droit de la souris sur le fichier, et choisir "Obtenir des informations" - la fenêtre popup aura une propriété pour Server qui répertorie le chemin d'accès complet de l'URL avec le protocole (par exemple smb://example.com/Data/file.png )

0 votes

Ne fonctionne pas pour moi : il n'y a pas de propriété pour Server.

1voto

Yashka Oreza Points 11

Deux ans plus tard, cela reste un problème ennuyeux, et comme je n'ai pas trouvé de bonne réponse à une question similaire, j'ai créé un service Automator qui fait cela dans le cadre du travail nécessaire pour créer un fichier .inetloc à partir du Finder.

En gros, il trouve le point de montage du partage actuel en utilisant la sortie de la commande mount et le fait correspondre au chemin 'monté', puis colle les deux ensemble comme Iacopo l'a mentionné ci-dessus.

Voici comment vous pourriez faire ce que vous voulez :

Passez l'élément finder sélectionné à un shell dans automator (comme une variable, pas stdin) et utilisez ce :

# Match the server address and share/subfolder to the mount point,
# using 'mount' command output:
FIRSTPART=$(mount | grep "$(echo $1 | cut -d '/' -f 1-3)" | sed 's/^.*@\(.*\) on.*$/\1/g')

# Glue on the rest of the path
SECONDPART=$(echo $1 | cut -d '/' -f 4-)
WHOLETHING=$FIRSTPART/$SECONDPART

# now we url encode it
# oneliner modified from http://stackoverflow.com/a/10797966
ENCODED=$(echo "$WHOLETHING" | curl -Gso /dev/null -w %{url_effective} --data-urlencode @- "" | cut -c 3- | rev | cut -c 4- | rev)
# and we need to change the %2Fs back into /s, and add the smb://

FINAL=smb://$(echo $ENCODED | sed 's/\%2F/\//g')

echo "$FINAL"

Vous pouvez ensuite utiliser une action "Copier dans le presse-papiers" après le . Cela devrait faire l'affaire. Si quelqu'un souhaite que le service Automator crée le fichier .inetloc correspondant, il est disponible à l'adresse suivante aquí .

0 votes

Je l'ai modifié pour l'utiliser dans notre bureau. Merci de le poster !

0voto

Iacopo Boccalari Points 151

Je pense que vous pouvez facilement corriger cela avec un peu d'applescript et de "sed".

Je ne sais pas à quoi ressemble votre applescript original, mais je suppose que vous avez une variable qui contient le chemin d'accès /Volumes/someFolder/someFile.docx comme vous l'avez dit, appelons cette variable thePath . Tout ce que vous avez à faire est de prendre thePath supprimer /Volumes/ et ajouter smb://Server/someParentFolder/

C'est ce que fait ce code :

#the following line only removes /Volumes/someFolder, it could also add smb://ecc but it would look like a big mess, I think it's easier to add that prefix in a separate line of code
set relativePath to do shell script "echo \"" & thePath & "\" | sed 's/.*Volumes\/someFolder//'"

#now you add the smb prefix or whatever you want
set relativePath to "smb://Server/someParentFolder" & relativePath

alors vous êtes prêt, utilisez relativePath pour votre sortie au lieu de thePath et ça devrait marcher, en tout cas ça a marché pour moi :)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X