Próbuję otworzyć folder w eksploratorze z wybranym plikiem.
Poniższy kod tworzy wyjątek „nie znaleziono pliku”:
System.Diagnostics.Process.Start(
"explorer.exe /select,"
+ listView1.SelectedItems[0].SubItems[1].Text + "\\"
+ listView1.SelectedItems[0].Text);
Jak mogę uzyskać to polecenie do wykonania w C #?
źródło
Jeśli ścieżka zawiera przecinki, umieszczanie cudzysłowów wokół ścieżki będzie działać, gdy używasz Process.Start (ProcessStartInfo).
NIE zadziała jednak przy używaniu Process.Start (string, string). Wygląda na to, że Process.Start (string, string) faktycznie usuwa cudzysłowy z twoich argumentów.
Oto prosty przykład, który mi pasuje.
źródło
Tylko moje 2 centy warte, jeśli nazwa twojego pliku zawiera spacje, np. „C: \ Mój plik zawiera spacje.txt”, musisz ująć nazwę pliku w cudzysłów, w przeciwnym razie eksplorator założy, że te słowa są różnymi argumentami ...
źródło
Odpowiedź Samuela Yang zaskoczyła mnie, oto moje 3 centy warte.
Adrian Hum ma rację, upewnij się, że nazwa pliku jest umieszczona w cudzysłowie. Nie dlatego, że nie obsługuje spacji, jak wskazał zourtney, ale dlatego, że rozpozna przecinki (i prawdopodobnie inne znaki) w nazwach plików jako oddzielne argumenty. Powinno więc wyglądać tak, jak zasugerował Adrian Hum.
źródło
filePath
to nie zawiera"
. Ten znak jest najwyraźniej nielegalny w systemach Windows, ale dozwolony we wszystkich innych (np. Systemach POSIXish), więc potrzebujesz jeszcze więcej kodu, jeśli chcesz przenośności.Używanie
Process.Start
onexplorer.exe
z/select
argumentem dziwnie działa tylko dla ścieżek krótszych niż 120 znaków.Musiałem użyć natywnej metody Windows, aby działała we wszystkich przypadkach:
źródło
Użyj „/select,c:\file.txt”
Zauważ, że po / select zamiast spacji powinien znajdować się przecinek.
źródło
Musisz umieścić argumenty do przekazania („/ select etc”) w drugim parametrze metody Start.
źródło
źródło
Najbardziej prawdopodobnym powodem, dla którego nie może znaleźć pliku, jest ścieżka zawierająca spacje. Na przykład nie znajdzie „explorer / select, c: \ space space \ space.txt”.
Po prostu dodaj cudzysłowy przed i po ścieżce, na przykład;
lub zrób to samo w C # z
źródło
Może to być trochę przesada, ale lubię funkcje zapewniające wygodę, więc weź tę:
To jest funkcja rozszerzenia, której używam jako <string> .Quote ():
źródło