Mencari solusi untuk mencetak jalur di dalam path
variabel di windows Command-Line saya datang ke solusi ini . jawabannya adalah perintah ini:
echo %path:;=&echo.%
sekarang saya bertanya-tanya bagaimana cara kerjanya.
windows
command-line
yekanchi
sumber
sumber
echo.
mungkin tidak berfungsi .Jawaban:
Itu solusi menarik yang belum pernah saya lihat sebelumnya. Biarkan saya mencoba menjelaskan:
echo %path%
. Ini akan mencetak semua direktori pada satu baris yang dipisahkan dengan titik koma (;
)%path:a=b%
yang akan menggantikan semuaa
karakter denganb
echo.
digunakan untuk mencetak baris baru&
digunakan untuk memisahkan perintah, misalnyaecho line1&echo line2
akan mencetak dua baris;
dengan yang tidak ada, lalu cetak baris baru'. Saya tidak dapat menemukan dokumentasi tentang ini, jadi itu hanya interpretasi saya. Terus terang, saya bahkan tidak tahu itu mungkin, tapi begitulah. UPDATE Penafsiran saya tentang langkah ini tampaknya tidak aktif, dan lebih baik dijelaskan oleh wizzwizz4 .sumber
echo path
? Apakah %% digunakan untuk variabel?set greeting=Hello
laluecho %greeting%
. Secara membingungkan,PATH
kebetulan merupakan perintah dan variabel, jadi ketikkan perintahpath
, atauecho %path%
akan memiliki hasil yang sama.$PATH
misalnya.echo.
bukan "perintah untuk mencetak baris baru". Ini adalah Microsoft command interpreter untuk Windows NT,cmd
; danecho.
hanya perintah untuk mencetak elemen path memastikan bahwa jika elemen path kosong itu tidak beralih ke fungsionalitas lainecho
. Yang pertamaecho
benar-benar harusecho.
terlalu.Ini menggunakan substitusi variabel baris perintah.
%path:;=&echo.%
berarti "%path%
, tetapi ganti semua;
dengan&echo.
". Ini berarti bahwa, denganset path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:menjadi:
Karena
&
pemisah perintah, ini setara dengan:Karena kebiasaan DOS Batch,
echo.
identik denganecho
kecuali ketika tidak ada setelahnya. Jika itu masalahnya, ia tidak akan mencetak apa-apa, alih-alih memberi tahu Anda apakahECHO
hidup atau mati. Ini akan menghasilkan:Sungguh, harus
echo.%path:;=&echo.%
memperhitungkan kasus di mana%PATH%
dimulai dengan a;
, tetapi perintah ini cukup pintar pula.Masuk ke detail detasia, benar
echo(
- benar harus digunakan sebagai gantiecho.
. Ini karenaecho.
dapat memiliki masalah ketika Anda memiliki file yang dipanggilecho
, dan lambat karena harus memeriksa disk (%CD%
dan saya pikir juga semuanya%PATH%
) setiap kali dijalankan. (Saya tidak memiliki salinan Windows sehingga saya tidak dapat memeriksanya sendiri; apakah hanya%CD%
atau di mana saja di mana%PATH%
kehadiranecho
file akan mempengaruhiecho.
, dan apa fungsinya?)sumber
echo)
, tapi saya tidak begitu ingat. ;-(echo.
adalah salah satu yang paling banyak beredar orang, bertahun-tahun yang lalu. Ini adalah satu dari banyak buku. Efisiensi bukan masalah. Perilaku aneh ketika berbagai file kebetulan ada adalah. Ketika saya menulis pengganti 32-bit untuk 16-bitcmd
di OS / 2, melanggar nama perintah pada karakter tanda baca ini dan perilaku parsing yang sangat tidak teratur ini adalah salah satu hal yang saya sengaja tidak duplikat, dan yang saya letakkan pada dokumen daftar perbedaan. Saya membuatechodot
perintah eksternal , yang mana bisa aliasecho.
sesuai keinginan.echo(
merupakan satu-satunya versi yang aman.