Saya menjalankan aplikasi pada command prompt atau Git shell, dan saya ingin mendapatkan output ke Notepad, untuk ditinjau lebih mudah dan diedit nanti.
Saya mencoba yang berikut ini, tetapi saya selalu mendapatkan instance Notepad kosong:
diff file1.txt file2.txt | notepad
Saya sadar bahwa saya dapat mengarahkan output ke file lain dan kemudian buka file di Notepad. Saya ingin menghindari langkah ekstra, karena saya hanya terbiasa dengan Vim atau kurang pada sistem non-Windows.
windows
command-line
notepad
Der Hochstapler
sumber
sumber
more
Windows.vim
, mengapa tidak menginstalnya saja?Jawaban:
Dari apa yang bisa saya katakan, tidak ada cara untuk langsung menyalurkan ke Notepad.
Namun, Anda dapat menyambungkan ke
clip
dan kemudian menempelkannya di notepad, seperti:Kemudian cukup tekan Ctrl+ Vdi Notepad.
sumber
&& notepad file3.txt
?Pertimbangkan untuk menggunakan Vim , atau dalam kasus Anda gVim jika Anda lebih suka lingkungan grafis.
Anda kemudian dapat memasukkan ke dalamnya dengan tanda hubung tunggal sebagai argumen, yang menginstruksikan Vim / gVim untuk membaca dari input standar.
sumber
:%!diff file1.txt file2.txt
-
sering digunakan untuk berarti "membaca dari stdin", jadi ini tidak terbatasvim
. Editor lain menggunakan-i
(misalnyakate
).inilah program Windows singkat yang melakukannya dengan benar (tanpa merusak clipboard). Seharusnya bisa beradaptasi dengan PowerShell, dan saya mungkin memperbarui jawaban ini jika saya punya waktu, tetapi Anda juga bisa langsung menggunakan program itu.
Nah, bagaimana dengan PowerShell? Tidak perlu menginstal aplikasi lain. Sayangnya, Anda akan perlu untuk membuat suatu tempat file script di Anda
PATH
...Versi singkat yang dapat Anda gunakan
Jika Anda membuat file batch (mis.
ShowInNotepad.bat
) Dengan konten berikut dan letakkan diPATH
suatu tempat Anda :Anda kemudian dapat menelepon
echo blah | ShowInNotepad
dari mana saja!Catatan bahwa ini tidak berasumsi bahwa Anda menggunakan versi terbaru-ish Windows (Vista +) dan memiliki tidak cacat PowerShell atau dihapus NET framework. Dengan kata lain, instalasi Windows default akan berfungsi.
Penjelasan panjang dan alternatif
Cara termudah yang dapat saya pikirkan adalah mengotomatiskan tindakan tempel ( Ctrl+ V). Yang setidaknya sudah dilakukan oleh satu jawaban lain, tetapi yang menggunakan AHK - Anda mungkin lebih beruntung mendapatkan PowerShell untuk bekerja di lingkungan perusahaan yang terkunci.
Ayo lanjutkan skripnya, ya?
Ini cukup mudah, jadi saya tidak akan repot menjelaskan skrip lebih dari komentar yang sudah dilakukan.
Pemakaian
Untuk menggunakannya, Anda hanya perlu menempatkan skrip dalam
.ps1
file (misalnyaShowInNotepad.ps1
), letakkan di suatu tempat di AndaPATH
dan kemudian panggilpowershell ShowInNotepad.ps1
setelah menempatkan teks yang ingin Anda tampilkan di clipboard.Contoh:
Sayangnya, menjalankan skrip PowerShell terkadang sulit (kebijakan eksekusi dan semua). Oleh karena itu, saya telah memadatkan skrip ini ke one-liner yang dapat Anda panggil langsung dari Command Prompt, atau bahkan ditempatkan ke dalam file batch:
Jika Anda membuat file batch (mis.
ShowInNotepad.bat
) Dengan konten berikut dan letakkan diPATH
suatu tempat Anda :Anda kemudian dapat menelepon
echo blah | ShowInNotepad
dari mana saja!sumber
Save
dan keluar pada perilaku dimodifikasi berbeda. Pendeknya mengganti Notepad itu sendiri atau langsung menyuntikkan teks ke dalam kontrol edit, tidak ada banyak pilihan lain. Tentu saja, metode ini memiliki kelemahan dari konten clipboard clobbering (meskipun itu seharusnya hanya sementara). Saya tidak berpikir kehilangan fokus adalah masalah utama; itu ...ShowWindow
dan mengirim penekanan tombol). Dan metode ini memang membutuhkan sedikit lebih banyak pengaturan (membuat file skrip) untuk digunakan, ya.Bagaimana dengan menggunakan AutoHotKey ?
Simpan yang berikut ini
stdin.ahk
dan letakkan di direktori AutoHotkey Anda:Maka baris perintah:
Pipes output dari perintah ke Notepad, selama jendela terbuka dan berjudul
Untitled - Notepad
. Jika jendela tidak aktif maka akan dengan riang buffer di latar belakang sampai jendela aktif. Anda bahkan dapat pergi ke program lain dan itu akan melakukan buffering sekali lagi.Ini tampaknya mati ketika program keluaran ke input standar kami mati meskipun ...
(Sebagai informasi, kode stdin () setengah inci tanpa malu-malu dari sini )
sumber
Ini sangat mungkin; Saya baru saja mencobanya. Saya berasumsi Notepad diatur untuk membuka file txt secara default:
OKE, Anda secara teknis membuat file, tetapi tidak disimpan.
Perpipaan ke lebih banyak juga merupakan pilihan.
sumber
output.txt
ini akan mengalahkannya. Secara marginal lebih aman adalah menggunakan%temp%/somerandomstring.txt
.Inilah cara yang jelek, tetapi efektif untuk mencapai ini:
Pastikan untuk hanya mengirim output teks. Data lain berpotensi ditafsirkan sebagai karakter kontrol (CTRL, ALT, DEL, dll.).
sumber
Berikut adalah beberapa solusi berbasis VBScript yang dapat bekerja (walaupun .. mereka sedikit bergantung pada pembukaan aplikasi tepat waktu):
pipe2key.vbs - membuka aplikasi yang ditentukan sebagai argumen pertama, dan kemudian mengirim StdIn sebagai penekanan tombol untuk itu. Perlu digunakan dengan cscript.exe karena wscript tidak menyediakan akses StdIn. Mungkin cukup lambat untuk dokumen yang panjang - tetapi tidak akan merusak clipboard
Contoh penggunaan:
diff file1.txt file2.txt | cscript pipe2key.vbs notepad.exe
Atau, pasteinto.vbs. Mengotomatiskan operasi CTRL-V setelah meluncurkan aplikasi (dengan demikian menggunakan perintah 'klip' seperti yang disebutkan dalam jawaban sebelumnya). Jauh lebih cepat dan lebih bersih (menurut saya) daripada pipe2key.vbs, tetapi prosesnya akan menimpa clipboard
Contoh penggunaan:
diff file1.txt file2.txt | clip && pasteinto notepad.exe
sumber
Sesuatu seperti ini "mungkin" bekerja.
Ah, kamu tidak menyadari ini adalah sesuatu yang akan kamu lakukan secara manual setiap kali (dari suara itu). Anda mungkin dapat membuat semacam makro atau sesuatu untuk Anda lakukan setiap kali untuk mempercepat proses. Tidak yakin dengan yang itu.
diff file1.txt file2.txt > file.txt | sleep 1 | notepad.exe file.txt | rm file.txt
Itu harus selesai menulis konten diff ke file.txt agar memuat seluruh operasi diff yang saya tidak yakin apakah itu akan dilakukan. Mungkin ada cara untuk menjeda entah bagaimana antara operasi pipa jika itu yang terjadi.
sumber
&
,&&
dan||
merupakan operator untuk menghubungkan perintah bersama. Semua 3 berperilaku berbeda dalam bagaimana mereka melanjutkan jika suatu perintah menghasilkan nilai balik non-0.|
sama sekali berbeda karena digunakan untuk menyalurkan output dari satu program ke program lainnya. Hasilnya mungkin apa yang Anda inginkan, tetapi menggunakan salah satu operator chaining membuat maksud menjadi lebih jelas, karena tidak ada pemipaan yang sebenarnya diinginkan dalam contoh itu. Untuk referensi tambahan: microsoft.com/resources/documentation/windows/xp/all/proddocs/…Bahasa saya bukan bahasa Inggris, maaf untuk kesalahan.
Saya pikir Anda tidak bisa langsung memasukkan output ke Notepad terbuka. Mungkin saya salah tentang itu. Anda harus membuat file dengan output di dalamnya untuk dapat mengatasinya. Tee perintah dapat menyalurkan output ke dua atau mungkin lebih banyak perintah atau file dalam waktu yang bersamaan.
man tee
Jangan lupa untuk menggunakan >> sebaliknya> ketika Anda mengalihkan output ke dalam file. > Akan menimpa file, >> akan menambahkan output setelah apa pun yang sudah ada dalam file itu.
sumber
tee
biasanya tidak tersedia di Windows dan bahkan jika itu, itu tidak akan membantu dengan masalah ini.Anda tidak bisa, Notepad terlalu terbatas untuk ini! Lebih baik lagi ... instal Cygwin dan selesaikan semua "kekurangan fitur" Windows ini. Anda kemudian dapat menggunakan perintah yang sudah Anda ketahui.
AFAIK, sangat sedikit program Windows yang mendukung pipelining, bahkan lebih buruk untuk program GUI.
Anda dapat mencoba membuka permintaan fitur ke salah satu program "windows tail" untuk menambahkannya.
sumber