Apakah ada cara untuk menjalankan perintah command prompt dari dalam aplikasi C #? Jika demikian, bagaimana saya akan melakukan hal berikut:
copy /b Image1.jpg + Archive.rar Image2.jpg
Ini pada dasarnya menanamkan file RAR dalam gambar JPG. Saya hanya ingin tahu apakah ada cara untuk melakukan ini secara otomatis di C #.
Jawaban:
ini yang harus Anda lakukan menjalankan perintah shell dari C #
EDIT:
Ini untuk menyembunyikan jendela cmd.
EDIT: 2
Penting adalah bahwa argumen dimulai dengan
/C
jika tidak maka tidak akan berhasil. Bagaimana Scott Ferguson berkata: "Lakukan perintah yang ditentukan oleh string dan kemudian berakhir."sumber
Mencoba solusi @RameshVel tapi saya tidak bisa meneruskan argumen di aplikasi konsol saya. Jika ada yang mengalami masalah yang sama di sini adalah solusinya:
sumber
cmd.StandardInput.WriteLine(@"cd C:\Test; pwd")
sumber
@
tanda masuk C #?proc1.FileName = "C:\\Windows\\System32\\cmd.exe";
proc1.Verb = "runas";
membuat proses ini berjalan dengan hak istimewa yang tinggi ... Ini tidak selalu dimaksudkan.Tidak ada jawaban di atas yang membantu karena beberapa alasan, sepertinya mereka menyapu kesalahan di bawah permadani dan membuat pemecahan masalah perintah seseorang menjadi sulit. Jadi saya berakhir dengan sesuatu seperti ini, mungkin itu akan membantu orang lain:
sumber
cmd.exe
aplikasi, Anda dapat memberikan perintah sebagai argumen.echo Hello World!
dan menampilkan output perintah di jendela cmd yang muncul. Jadi saya mencoba:Filename = @"echo"
,Arguments = "Hello World!"
,UseShellExecute = false
,RedirectStandardOuput = false
,CreateNoWindow = false
. Ini memungkinkan jendela cmd dari aplikasi induk untuk menampilkan "Hello World!" (Yang masuk akal karena stdout tidak dialihkan ke proses anak).Meskipun secara teknis ini tidak secara langsung menjawab pertanyaan yang diajukan, itu menjawab pertanyaan tentang bagaimana melakukan apa yang ingin dilakukan poster asli: menggabungkan file. Jika ada, ini adalah pos untuk membantu pemula memahami apa yang dibicarakan oleh Instance Hunter dan Konstantin.
Ini adalah metode yang saya gunakan untuk menggabungkan file (dalam hal ini jpg dan zip). Perhatikan bahwa saya membuat buffer yang terisi dengan konten file zip (dalam potongan kecil daripada dalam satu operasi baca besar), dan kemudian buffer dituliskan di bagian belakang file jpg sampai akhir file zip adalah tercapai:
sumber
jika Anda ingin membiarkan jendela cmd terbuka atau ingin menggunakannya di winform / wpf maka gunakan seperti ini
Akan membuat jendela cmd tetap terbuka
sumber
cmd
perintah dan parameternya.Ya, ada (lihat tautan dalam komentar Matt Hamilton), tetapi akan lebih mudah dan lebih baik untuk menggunakan kelas IO .NET. Anda dapat menggunakan File.ReadAllBytes untuk membaca file dan kemudian File.WriteAllBytes untuk menulis versi "tertanam".
sumber
Anda dapat melakukan ini menggunakan CliWrap dalam satu baris:
sumber
Unable to find package 'CliWrap' at source
dengan referensi ke
Microsoft.VisualBasic
sumber
Ini adalah versi kode yang sedikit sederhana dan kurang. Ini akan menyembunyikan jendela konsol juga-
sumber
jika Anda ingin menjalankan perintah dalam mode async - dan cetak hasilnya. Anda dapat kelas ini:
sumber
Anda dapat mencapai ini dengan menggunakan metode berikut (sebagaimana disebutkan dalam jawaban lain):
Ketika saya mencoba metode yang tercantum di atas saya menemukan bahwa perintah kustom saya tidak berfungsi menggunakan sintaks dari beberapa jawaban di atas.
Saya menemukan perintah yang lebih kompleks perlu dienkapsulasi dalam tanda kutip agar berfungsi:
sumber
Anda dapat menggunakan cukup menulis kode dalam
.bat
ekstensi format, kode file batch:c:/ copy /b Image1.jpg + Archive.rar Image2.jpg
gunakan kode c # ini:
Process.Start("file_name.bat")
sumber
.vbs
ekstensi format, kode:CreateObject("Wscript.Shell").Run "filename.bat",0,True