6 votes

Générer des URI "file://" dans l'Explorateur Windows

Je cherche un moyen d'obtenir un fichier:/ URI approprié à partir de l'Explorateur Windows. En gros, je voudrais avoir une entrée de menu contextuel qui dit "copier l'URI du fichier dans le presse-papiers". Quelque chose de ce genre existe-t-il ?

Il ne s'agit pas d'un doublon de "Copier le nom du fichier dans le presse-papiers" puisque je veux une URI de fichier et non le nom du chemin.

Pour clarifier : je cherche à obtenir "file:///c:/Temp/foo%20bar.txt" et ni " C:\Temp\foo bar.txt" ni "foo bar.txt" ni " C:\Temp ".

3voto

w32sh Points 10300

Je viens juste d'arriver avec ce VBS.

If WScript.arguments.count > 0 Then
    Dim WshShell: Set WshShell = WScript.CreateObject("Wscript.Shell")
    strPath = "file:///" & Wscript.Arguments(0)
    strPath = Replace(strPath,"\","/")
    strPath = Replace(strPath," ","%20")
    sCmd = "%comspec% /c<nul (set/p anyvariable=" & Chr(34) & strPath & Chr(34) & ")|clip.exe"
    WshShell.Run sCmd,0,0
    Set WshShell = Nothing
End If

Enregistrez-le en tant que fichier .VBS. Glissez et déposez un fichier sur le VBScript et il copie l'URI du fichier dans le presse-papiers. Vous pouvez l'implémenter dans le menu du clic droit si nécessaire.

Il copie le nom du fichier en mémoire, inverse les barres obliques, remplace les espaces par "%20" et ajoute "file:///" au début. C'est un script de base qui ne supporte qu'un seul nom de fichier / argument. Vous pouvez le modifier selon vos besoins.

Ajoutez le script à votre dossier "Envoyer à".

Vous pouvez placer un raccourci du script dans votre dossier "Envoyer à". Appuyez sur WinKey + R , type shell:sendto et appuyez sur ENTER . Créez un raccourci vers le script dans le dossier Send To et nommez-le en conséquence. (ex. Copy File URI )

Maintenant, cliquez avec le bouton droit de la souris sur un fichier, cliquez sur Envoyer vers et cliquez sur Copy File URI . Le chemin du fichier sera copié dans le presse-papiers, au format URI comme ci-dessous.

file:///C:/Users/jack/desktop/list-of-items.txt

0voto

Brian Webster Points 7516

Le script de VBS est sympathique, mais il n'est pas possible qu'il gère tous les cas de figure traités par des outils tels que UrlCreateFromPath ou de .NET System.URI .

Heureusement, les deux sont faciles à utiliser, voici ce que j'ai fait :

using System;
using System.Windows.Forms;

namespace AbsoluteUriGenerator
{
    class Program
    {
        [STAThread]
        static int Main(string[] args)
        {
            if (args.Length != 1)
            {
                var executableName = typeof(Program).Assembly.GetName().Name + ".exe";
                Console.WriteLine("Usage: {0} pathToConvert", executableName);
                Console.WriteLine("Example: {0} \"C:\\foo\"", executableName);
                return 1;
            }

            var path = args[0];
            Console.WriteLine("Resolving file:// URI of path: {0}", path);
            var fileUri = new Uri(path).AbsoluteUri;

            Console.WriteLine("Setting clipboard to resolved file:// URI: {0}", fileUri);
            Clipboard.SetText(fileUri);
            return 0;
        }
    }
}

Vous pouvez le copier dans votre shell:sendto voici une version compilée : https://1drv.ms/u/s!Aj2cMNVj29ben4B_mh9Md5R4ghBlMQ

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X