Estoy tratando de abrir una carpeta en el explorador con un archivo seleccionado.
El siguiente código produce una excepción de archivo no encontrado:
System.Diagnostics.Process.Start(
"explorer.exe /select,"
+ listView1.SelectedItems[0].SubItems[1].Text + "\\"
+ listView1.SelectedItems[0].Text);
¿Cómo puedo hacer que este comando se ejecute en C #?
fuente
Si su ruta contiene comas, poner comillas alrededor de la ruta funcionará cuando use Process.Start (ProcessStartInfo).
Sin embargo, NO funcionará cuando se use Process.Start (string, string). Parece que Process.Start (string, string) en realidad elimina las comillas dentro de sus argumentos.
Aquí hay un ejemplo simple que funciona para mí.
fuente
Solo mi valor de 2 centavos, si su nombre de archivo contiene espacios, es decir, "c: \ Mi archivo contiene espacios.txt", deberá rodear el nombre del archivo con comillas; de lo contrario, el explorador asumirá que las otras palabras son argumentos diferentes ...
fuente
La respuesta de Samuel Yang me hizo tropezar, aquí valen mis 3 centavos.
Adrian Hum tiene razón, asegúrese de poner comillas alrededor de su nombre de archivo. No porque no pueda manejar espacios como señaló Zourtney, sino porque reconocerá las comas (y posiblemente otros caracteres) en los nombres de archivos como argumentos separados. Entonces debería verse como sugirió Adrian Hum.
fuente
filePath
no contiene"
. Este carácter es aparentemente ilegal en los sistemas Windows, pero está permitido en todos los demás (por ejemplo, sistemas POSIXish), por lo que necesita aún más código si desea portabilidad.El uso
Process.Start
deexplorer.exe
la/select
argumentación curiosamente sólo funciona para las rutas de menos de 120 caracteres de longitud.Tuve que usar un método nativo de Windows para que funcione en todos los casos:
fuente
Use "/select,c:\file.txt"
Observe que debe haber una coma después / select en lugar de espacio.
fuente
Debe colocar los argumentos para pasar ("/ select, etc") en el segundo parámetro del método de Inicio.
fuente
fuente
La razón más posible para que no encuentre el archivo es la ruta que tiene espacios. Por ejemplo, no encontrará "explorer / select, c: \ space space \ space.txt".
Simplemente agregue comillas dobles antes y después de la ruta, como;
o hacer lo mismo en C # con
fuente
Puede ser un poco exagerado, pero me gustan las funciones de conveniencia, así que toma esta:
Esta es la función de extensión que uso como <string> .Quote ():
fuente