2011-07-12 61 views
9

Trong lập trình trong Scala, nó đưa ra một mô tả về cách chạy Scala script từ tập tin batch (link).Scala script trong Windows batch files

Đối với Windows

::#! 
    @echo off 
    call scala %0 %* 
    goto :eof 
    ::!# 

Tôi đang gặp một vấn đề googling ::#!. Điều đó có nghĩa là gì? Tôi biết :: biểu thị một nhận xét và trong Unix #! là một hướng để vỏ được sử dụng, nhưng nó là chính xác ở đây? Và ::!#?

Chính xác thì %0 %* có nghĩa là gì và cần phải thể hiện nó như thế này?

Có thể chạy nhiều tập lệnh từ cùng một tệp lô không?

Trả lời

15

Đâ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. :-)

2

% 0 cho biết tên chương trình (tên tệp kịch bản có thể),% * biểu thị cho danh sách tham số dòng lệnh. % 1 có nghĩa là thông số đầu tiên ...

+0

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 –

Các vấn đề liên quan