Existe alguma maneira de executar comandos de prompt de comando de dentro de um aplicativo C #? Se sim, como eu faria o seguinte:
copy /b Image1.jpg + Archive.rar Image2.jpg
Basicamente, isso incorpora um arquivo RAR na imagem JPG. Eu só estava me perguntando se havia uma maneira de fazer isso automaticamente em c #.
Respostas:
isso é tudo o que você precisa fazer para executar comandos do shell em c #
EDITAR:
Isso é para ocultar a janela do cmd.
EDIT: 2
Importante é que o argumento comece com,
/C
caso contrário, não funcionará. Como Scott Ferguson disse: "Realiza o comando especificado pela string e depois termina".fonte
Tentei a solução @RameshVel, mas não consegui passar argumentos no meu aplicativo de console. Se alguém tiver o mesmo problema, aqui está uma solução:
fonte
cmd.StandardInput.WriteLine(@"cd C:\Test; pwd")
fonte
@
sinal em C #?proc1.FileName = "C:\\Windows\\System32\\cmd.exe";
proc1.Verb = "runas";
esse processo é executado com privilégios elevados ... Isso nem sempre é intencional.Nenhuma das respostas acima ajudou por algum motivo, parece que eles varrem os erros para debaixo do tapete e dificultam a solução de problemas do comando. Então acabei indo com algo assim, talvez isso ajude outra pessoa:
fonte
cmd.exe
aplicativo, poderá passar comandos como argumentos.echo Hello World!
e exibisse o comando output na janela do cmd que é exibida. Então, eu tentei:Filename = @"echo"
,Arguments = "Hello World!"
,UseShellExecute = false
,RedirectStandardOuput = false
,CreateNoWindow = false
. Isso permitiu que a janela cmd do aplicativo pai exibisse "Hello World!" (o que faz sentido porque stdout não foi redirecionado para o processo filho).Embora tecnicamente isso não responda diretamente à pergunta feita, ele responde à pergunta de como fazer o que o pôster original queria: combinar arquivos. Se alguma coisa, este é um post para ajudar os novatos a entender o que Instance Hunter e Konstantin estão falando.
Este é o método que eu uso para combinar arquivos (neste caso, um jpg e um zip). Observe que eu crio um buffer que é preenchido com o conteúdo do arquivo zip (em pequenos pedaços em vez de em uma grande operação de leitura) e, em seguida, o buffer é gravado na parte de trás do arquivo jpg até o final do arquivo zip. alcançado:
fonte
se você quiser manter a janela do cmd aberta ou quiser usá-la no winform / wpf, use-a assim:
Manterá a janela do cmd aberta
fonte
cmd
comando e seus parâmetros.Sim, existe (veja o link no comentário de Matt Hamilton), mas seria mais fácil e melhor usar as classes de E / S do .NET. Você pode usar File.ReadAllBytes para ler os arquivos e, em seguida, File.WriteAllBytes para gravar a versão "incorporada".
fonte
Você pode fazer isso usando o CliWrap em uma linha:
fonte
Unable to find package 'CliWrap' at source
com uma referência a
Microsoft.VisualBasic
fonte
Aqui está uma versão de código pouco simples e menos. Também ocultará a janela do console.
fonte
se você deseja executar o comando no modo assíncrono - e imprima os resultados. você pode esta classe:
fonte
Você pode conseguir isso usando o seguinte método (conforme mencionado em outras respostas):
Quando tentei os métodos listados acima, descobri que meu comando personalizado não funcionava usando a sintaxe de algumas das respostas acima.
Eu descobri que comandos mais complexos precisam ser encapsulados em aspas para funcionar:
fonte
você pode simplesmente escrever o código em uma
.bat
extensão de formato, o código do arquivo em lote:c:/ copy /b Image1.jpg + Archive.rar Image2.jpg
use este código c #:
Process.Start("file_name.bat")
fonte
.vbs
extensão de formato, o código:CreateObject("Wscript.Shell").Run "filename.bat",0,True