Câu trả lời:
Đó là một giải pháp thú vị mà tôi chưa từng thấy trước đây. Hãy để tôi cố gắng giải thích:
echo %path%
. Điều này sẽ in tất cả các thư mục trên một dòng được phân tách bằng dấu chấm phẩy ( ;
)%path:a=b%
nó sẽ thay thế tất cả các a
ký tự bằngb
echo.
được sử dụng để in một dòng mới&
được sử dụng để phân tách các lệnh, ví dụ như echo line1&echo line2
sẽ in hai dòng;
bằng không có gì, và sau đó , in một dòng mới". Tôi không thể tìm thấy bất kỳ tài liệu nào về điều này, vì vậy đó chỉ là cách giải thích của tôi. Thành thật mà nói, tôi thậm chí không biết điều đó là có thể, nhưng bạn đã đi. CẬP NHẬT Giải thích của tôi về bước này dường như bị tắt, và được giải thích tốt hơn bởi wizzwizz4 .echo path
không? %% được sử dụng cho các biến?
set greeting=Hello
và sau đó echo %greeting%
. Một cách khó hiểu, PATH
tình cờ là cả một lệnh và một biến, do đó, gõ lệnh path
, hoặc echo %path%
sẽ có kết quả tương tự.
$PATH
ví dụ.
echo.
không phải là "lệnh in một dòng mới". Đây là trình thông dịch lệnh của Microsoft cho Windows NT , cmd
; và echo.
chỉ đơn giản là lệnh in một phần tử đường dẫn đảm bảo rằng nếu phần tử đường dẫn trống thì nó không chuyển sang chức năng khácecho
. Đầu tiên echo
thực sự nên là một echo.
quá.
Đây là sử dụng thay thế biến dòng lệnh. %path:;=&echo.%
có nghĩa là " %path%
, nhưng thay thế tất cả ;
s bằng &echo.
". Điều này có nghĩa là, với set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
trở thành:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Vì &
là một dấu phân cách lệnh, điều này tương đương với:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Do sự kỳ quặc của DOS Batch, echo.
giống hệt như echo
ngoại trừ khi không có gì sau nó. Nếu đó là trường hợp, nó chỉ đơn giản là in không có gì, thay vì cho bạn biết ECHO
là bật hay tắt. Điều này sẽ làm cho đầu ra:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Thực sự, nó nên được echo.%path:;=&echo.%
tính cho trường hợp %PATH%
bắt đầu bằng một ;
, nhưng dù sao lệnh này cũng khá thông minh.
Bắt đầu vào chi tiết, thực sự echo(
nên được sử dụng thay vì echo.
. Điều này là do echo.
có thể có vấn đề khi bạn có một tệp được gọi echo
và chậm vì nó phải kiểm tra đĩa ( %CD%
và tôi cũng nghĩ là tất cả %PATH%
) mỗi khi nó chạy. (Tôi không có bản sao Windows nên tôi không thể tự kiểm tra; nó chỉ %CD%
hoặc bất cứ nơi nào %PATH%
mà sự hiện diện của echo
tệp sẽ ảnh hưởng echo.
và nó làm gì?)
echo)
, nhưng tôi không thực sự nhớ. ;-(
echo.
là thứ mà mọi người thường lưu hành nhiều năm trước. Nó là một trong nhiều cuốn sách. Hiệu quả không phải là vấn đề. Hành vi lập dị khi các tập tin khác nhau tồn tại là. Khi tôi viết thay thế 32 bit cho 16 bit cmd
trong OS / 2, việc ngắt tên lệnh tại các ký tự dấu chấm câu này và hành vi phân tích cú pháp không đều này là một trong những điều mà tôi cố tình không sao chép và tôi đã đưa vào tài liệu danh sách sự khác biệt. Tôi đã thực hiện một echodot
lệnh bên ngoài thay vào đó, mà người ta có thể bí danh echo.
như mong muốn.
echo(
là phiên bản an toàn duy nhất.
echo.
có thể không hoạt động .