Saya ingin menampilkan pesan kepada pengguna dengan menggunakan CMD. Cara saya tahu untuk melakukannya adalah dengan membuat file .vbs (VBScript) dan menjalankannya dari CMD seperti ini:
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
Tapi yang ingin saya lakukan adalah menampilkan pesan tanpa membuat file apa pun, langsung dari CMD. Mungkin dengan menggunakan perintah untuk menjalankan VBScripts langsung dari CMD.
msg
perintahnya. Anda mungkin tidak memilikinya jika Anda menjalankan Windows edisi Home, tetapi Anda dapat menambahkannya hanya dengan menyalin dan menempel msg.exe dari instalasi Pro.Jawaban:
Seperti yang telah dikatakan orang lain, tidak ada cara untuk melakukan ini dengan cmd tetapi walaupun itu adalah judul pertanyaan, bagi saya tampaknya bagian tanpa file lebih penting bagi Anda dan dalam keadaan tertentu hal ini dimungkinkan.
Dengan PowerShell seharusnya dapat menjalankan kode tanpa file seperti ini:
VBS tidak mengizinkan eksekusi kode secara langsung melalui cscript atau wscript tetapi mshta melakukannya. Anda dapat menggunakannya seperti ini (jika Anda membutuhkan banyak baris, gunakan ':' sebagai pembatas):
Karena berbasis yaitu itu mungkin dipengaruhi oleh beberapa pembatasan gpo jadi jika Anda memiliki pilihan powershell mungkin adalah taruhan yang lebih aman
sumber
mshta
, beberapa perangkat lunak antivirus menganggapnya sebagai proses yang mungkin tidak diinginkan. Di tempat kerja, upaya saya untuk menjalankannya menghasilkan produk perusahaan yang terlalu bersemangat (SentinelOne) untuk mengkarantina seluruh mesin saya dan menghapusnya dari jaringan.Seperti yang disarankan oleh @wysiwyg, pada versi Pro / Bisnis * Windows Anda sedang mencari
Msg
perintah. Ini tersedia di semua versi modern Windows (setidaknya sejauh XP). Untuk menampilkan pesan ke pengguna yang saat ini masuk, jalankan yang berikut:Hasilnya terlihat seperti ini:
Satu pertimbangan dengan perintah ini adalah Anda tidak dapat mengkustomisasi teks Titlebar.
Anda dapat mempelajari lebih lanjut tentang Msg di TechNet .
* Jika Anda membutuhkan solusi yang berfungsi pada semua edisi Windows, termasuk Home , menurut saya metode VBScript yang sudah Anda ketahui adalah solusi paling sederhana untuk masalah ini. Ini berfungsi pada semua versi modern dan edisi Windows dalam konfigurasi standarnya, dan mudah digunakan.
sumber
Saya membutuhkan sesuatu yang mirip dengan ini hari ini. Karena saya tidak dapat menemukan solusi ketergantungan eksternal yang saya sukai karena saya bukan penggemar VBScript / Powershell, saya melanjutkan dan menulis satu:
https://github.com/cubiclesoft/messagebox-windows
Kotak pesan yang dihasilkannya adalah modal ke jendela konsol saat ini. Artinya, pengguna tidak dapat melakukan apa pun sampai mereka menutup dialog. Juga, kode kembali dari
MessageBox()
panggilan dikembalikan ke penelepon sehingga skrip dapat bereaksi terhadap tombol mana saja yang ditekan. Dan, tentu saja, mendukung berbagai pilihan untukMessageBox()
Win32 API.Menambahkan 80KB yang dapat dieksekusi ke dalam campuran mungkin bukan cangkir teh semua orang. Ia secara statis dihubungkan dengan runtime VC ++ dan mendukung Unicode, yang menjelaskan mengapa file tersebut sangat besar mengingat sifat minimalis dari apa yang dilakukannya. Dan ada masalah kecil karena tidak dapat dengan mudah meneruskan baris baru dari baris perintah untuk menampilkan pesan multiline. Pada terbalik kecil, ini menampilkan dialog dalam waktu jam dinding kurang dari solusi lain yang disajikan sejauh ini.
Tentu saja, jika ukuran file tidak masalah dan dialog membuat pengalaman pengguna terlalu "di wajah Anda" dan / atau tidak memerlukan interaksi pengguna, saya juga mengalami proyek yang bagus ini:
https://www.paralint.com/projects/notifu/
Yang menampilkan balon sembulan di area pemberitahuan status layar menggunakan IUserNotification . The downside adalah bahwa berjalan dieksekusi Notifu hanya 240KB. Contoh lain yang disayangkan bahwa COM membuat mengasapi yang tidak perlu dan membuat saya berharap ada API sederhana dan ringan untuk fitur tersebut.
Untuk sesuatu lintas platform, ada kemudahan. Ini sebagian besar untuk Linux tetapi ada port Mac dan Windows juga. Port zenity Windows berukuran lebih dari 1MB karena, well, GTK cukup besar.
sumber
Saya punya cara untuk melakukan ini dengan cmd, tetapi pada dasarnya tidak termasuk file, tetapi file dihapus langsung setelah vbs dieksekusi. Jadi sebenarnya tidak. Anda dapat melakukan :
Ketik + Ikon + Tindakan hanyalah vbs dasar, untuk referensi, di sini. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 Kode yang saya perlihatkan kepada Anda membuat file yang memiliki kode VBS di dalamnya, kemudian dijalankan menggunakan cscript, lalu menghapus file setelah dijalankan sehingga tampak seperti telah dipanggil oleh prompt cmd. Untuk membuatnya lebih terlihat seperti itu, gunakan saja @echo. Semoga ini bisa membantu!
sumber
Selain itu, dengan executable eksternal (non-Windows asli) , ada
Jika Anda memiliki akses ke kompiler VB6, maka one-liner ini menghasilkan executable 5.5k:
sumber