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 semua a
karakter denganb
echo.
digunakan untuk mencetak baris baru&
digunakan untuk memisahkan perintah, misalnya echo 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 .echo path
? Apakah %% digunakan untuk variabel?
set greeting=Hello
lalu echo %greeting%
. Secara membingungkan, PATH
kebetulan merupakan perintah dan variabel, jadi ketikkan perintah path
, atau echo %path%
akan memiliki hasil yang sama.
$PATH
misalnya.
echo.
bukan "perintah untuk mencetak baris baru". Ini adalah Microsoft command interpreter untuk Windows NT, cmd
; dan echo.
hanya perintah untuk mencetak elemen path memastikan bahwa jika elemen path kosong itu tidak beralih ke fungsionalitas lainecho
. Yang pertama echo
benar-benar harus echo.
terlalu.
Ini menggunakan substitusi variabel baris perintah. %path:;=&echo.%
berarti " %path%
, tetapi ganti semua ;
dengan &echo.
". Ini berarti bahwa, dengan set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
menjadi:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Karena &
pemisah perintah, ini setara dengan:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Karena kebiasaan DOS Batch, echo.
identik dengan echo
kecuali ketika tidak ada setelahnya. Jika itu masalahnya, ia tidak akan mencetak apa-apa, alih-alih memberi tahu Anda apakah ECHO
hidup atau mati. Ini akan menghasilkan:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
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 ganti echo.
. Ini karena echo.
dapat memiliki masalah ketika Anda memiliki file yang dipanggil echo
, 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%
kehadiran echo
file akan mempengaruhi echo.
, dan apa fungsinya?)
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-bit cmd
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 membuat echodot
perintah eksternal , yang mana bisa alias echo.
sesuai keinginan.
echo(
merupakan satu-satunya versi yang aman.
echo.
mungkin tidak berfungsi .