Đây là một mánh lới quảng cáo, nhưng nó hoạt động. Nó dự định nhân rộng khả năng của trình bao Unix để gọi một lệnh cụ thể để xử lý một tệp shell. Vì vậy, đây là lời giải thích:
::#!
dòng bắt đầu với ::
được bình luận trong Windows vỏ, vì vậy đây là chỉ là một nhận xét.
@echo off
Không hiển thị các dòng được thực hiện từ đây trở đi. Các @
lúc đầu đảm bảo dòng này chính nó sẽ không được hiển thị.
call scala %0 %*
Thực hiện chuyển sang tập lệnh scala
. Các %0
có nghĩa là tên của tập tin này chính nó (để scala có thể tìm thấy nó), và %*
là các thông số đã được thông qua trong thực hiện của nó.
Ví dụ: giả sử các dòng này nằm trong một tệp có tên là count.bat
và bạn đã gọi nó bằng cách nhập count 1 2 3
. Trong trường hợp này, dòng đó sẽ thực hiện scala count 1 2 3
- trong trường hợp đó bạn sẽ gặp lỗi. Bạn phải gọi bằng cách nhập count.bat
.
goto :eof
Hoàn thành thực thi tập lệnh.
::!#
Dòng nhận xét khác. Vì vậy, đây là lừa ... Scala, một khi được gọi, sẽ tìm thấy các tập tin thông qua như là đối số đầu tiên, kiểm tra xem dòng đầu tiên là ::#!
, bỏ qua tất cả mọi thứ lên đến dòng ::!#
nếu có, và sau đó thực hiện phần còn lại của tệp (các dòng sau ::!#
) dưới dạng tập lệnh Scala.
Nói cách khác, nó không phải là vỏ Windows thông minh, đó là Scala. :-)
Nguồn
2011-07-13 01:24:29
Cùng một đối số được sử dụng trong tệp lô Javascript này http://stackoverflow.com/questions/4999395/how-does-this-windows-batch-file-work –