J'essaye d'ouvrir un dossier dans l'explorateur avec un fichier sélectionné.
Le code suivant produit une exception de fichier introuvable:
System.Diagnostics.Process.Start(
"explorer.exe /select,"
+ listView1.SelectedItems[0].SubItems[1].Text + "\\"
+ listView1.SelectedItems[0].Text);
Comment puis-je exécuter cette commande en C #?
la source
Si votre chemin contient des virgules, placer des guillemets autour du chemin fonctionnera lors de l'utilisation de Process.Start (ProcessStartInfo).
Cela ne fonctionnera PAS lors de l'utilisation de Process.Start (chaîne, chaîne). Il semble que Process.Start (string, string) supprime en fait les guillemets à l'intérieur de vos arguments.
Voici un exemple simple qui fonctionne pour moi.
la source
Juste mes 2 cents, si votre nom de fichier contient des espaces, c'est-à-dire "c: \ Mon fichier contient des espaces.txt", vous devrez entourer le nom de fichier de guillemets, sinon l'explorateur supposera que les autres mots sont des arguments différents ...
la source
La réponse de Samuel Yang m'a fait trébucher, voici ma valeur de 3 cents.
Adrian Hum a raison, assurez-vous de mettre des guillemets autour de votre nom de fichier. Non pas parce qu'il ne peut pas gérer les espaces comme l'a souligné Zourtney, mais parce qu'il reconnaîtra les virgules (et éventuellement d'autres caractères) dans les noms de fichiers comme des arguments séparés. Cela devrait donc ressembler à ce qu'Adrian Hum a suggéré.
la source
filePath
cela ne contient pas"
. Ce caractère est apparemment illégal sur les systèmes Windows mais autorisé sur tous les autres (par exemple, les systèmes POSIXish), vous avez donc besoin d'encore plus de code si vous voulez la portabilité.L' utilisation
Process.Start
surexplorer.exe
le/select
raisonnement fonctionne curieusement que pour les chemins moins de 120 caractères.J'ai dû utiliser une méthode Windows native pour que cela fonctionne dans tous les cas:
la source
Utilisez "/select,c:\file.txt"
Notez qu'il devrait y avoir une virgule après / select au lieu d'un espace.
la source
Vous devez mettre les arguments à passer ("/ select etc") dans le deuxième paramètre de la méthode Start.
la source
la source
La raison la plus probable pour laquelle il ne trouve pas le fichier est le chemin contenant des espaces. Par exemple, il ne trouvera pas "explorer / select, c: \ space space \ space.txt".
Ajoutez simplement des guillemets avant et après le chemin, comme;
ou faites de même en C # avec
la source
Cela peut être un peu exagéré, mais j'aime les fonctions de commodité, alors prenez celle-ci:
C'est la fonction d'extension que j'utilise comme <string> .Quote ():
la source