programa - selecionar varios arquivos c#




Abrindo uma pasta no explorador e selecionando um arquivo (8)

Apenas meus 2 centavos de valor, se o seu nome de arquivo contiver espaços, ou seja, "c: \ Meu arquivo contém espaços.txt", você precisará cercar o nome do arquivo com aspas. Caso contrário, o explorador assumirá que as outras palavras são argumentos diferentes ...

string argument = "/select, \"" + filePath +"\"";

Estou tentando abrir uma pasta no explorer com um arquivo selecionado.

O código a seguir produz uma exceção de arquivo não encontrado:

System.Diagnostics.Process.Start(
    "explorer.exe /select," 
    + listView1.SelectedItems[0].SubItems[1].Text + "\\" 
    + listView1.SelectedItems[0].Text);

Como posso obter este comando para executar em c #?


O motivo mais possível para não encontrar o arquivo é o caminho que contém espaços. Por exemplo, ele não encontrará "explorer / select, c: \ space space \ space.txt".

Basta adicionar aspas duplas antes e depois do caminho, como;

explorer /select,"c:\space space\space.txt"

ou fazer o mesmo em c # com

System.Diagnostics.Process.Start("explorer.exe","/select,\"c:\space space\space.txt\"");

Resposta Samuel Yang me tropeçou, aqui é o meu valor de 3 centavos.

Adrian Hum está certo, certifique-se de colocar aspas em torno do seu nome de arquivo. Não porque ele não possa manipular espaços como zourtney apontou, mas porque reconhecerá as vírgulas (e possivelmente outros caracteres) em nomes de arquivos como argumentos separados. Então deve parecer Adrian Hum sugerido.

string argument = "/select, \"" + filePath +"\"";

Se seu caminho contiver vírgulas, colocar aspas ao redor do caminho funcionará ao usar Process.Start (ProcessStartInfo).

Ele não funcionará ao usar Process.Start (string, string). Parece que Process.Start (string, string) realmente remove as aspas dentro de seus argumentos.

Aqui está um exemplo simples que funciona para mim.

string p = @"C:\tmp\this path contains spaces, and,commas\target.txt";
string args = string.Format("/e, /select, \"{0}\"", p);

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "explorer";
info.Arguments = args;
Process.Start(info);

Use "/select,c:\file.txt"

Observe que deve haver uma vírgula após / select em vez de espaço ..


Use este método :

Process.Start(String, String)

Primeiro argumento é um aplicativo (explorer.exe), segundo argumento do método são argumentos do aplicativo que você executa.

Por exemplo:

no CMD:

explorer.exe -p

em c #:

Process.Start("explorer.exe", "-p")

// suppose that we have a test.txt at E:\
string filePath = @"E:\test.txt";
if (!File.Exists(filePath))
{
    return;
}

// combine the arguments together
// it doesn't matter if there is a space after ','
string argument = "/select, \"" + filePath +"\"";

System.Diagnostics.Process.Start("explorer.exe", argument);

string windir = Environment.GetEnvironmentVariable("windir");
if (string.IsNullOrEmpty(windir.Trim())) {
    windir = "C:\\Windows\\";
}
if (!windir.EndsWith("\\")) {
    windir += "\\";
}    

FileInfo fileToLocate = null;
fileToLocate = new FileInfo("C:\\Temp\\myfile.txt");

ProcessStartInfo pi = new ProcessStartInfo(windir + "explorer.exe");
pi.Arguments = "/select, \"" + fileToLocate.FullName + "\"";
pi.WindowStyle = ProcessWindowStyle.Normal;
pi.WorkingDirectory = windir;

//Start Process
Process.Start(pi)




explorer