Đó là giá trị đề cập rằng rplantiko's solution làm việc ngay cả khi phần mở rộng của tên tập tin không phải là .js. Điều này cho phép đặt mã .js vào tệp .cmd và chạy dưới dạng lô, tạo thành một giải pháp một tệp hoàn toàn di động mà không cần các bước sơ bộ (như assoc
).
Ví dụ, nếu bạn tạo một file test.cmd
với các nội dung sau đây, bạn sẽ có thể chạy nó bằng cách nhấp vào nó trong Explorer, hoặc bằng cách kéo & thả một file lên biểu tượng của nó:
@if (@CodeSection == @Batch) @then
@cscript //Nologo //E:jscript "%~f0" "test arg" %* & pause & goto :eof
@end
WScript.Echo("hello world");
for (var i = 0, n = WScript.Arguments.Length, args = []; i < n; ++i)
args.push(WScript.Arguments(i));
WScript.Echo("arguments: " + args.join(","));
Đường giữa @then
... @end
là các lệnh lô được diễn giải bởi cmd.exe. Lệnh cuối cùng là goto :eof
để bỏ qua phần còn lại của tệp. Các dòng sau @end
được diễn giải bởi cscript.exe.
Không, không hoạt động ... – Mehrdad