Tôi đã có một tập lệnh batch thực hiện một số xử lý và gọi một số tập lệnh perl.Có thể chạy Perl và Batch trong cùng một tệp lô không?
Câu hỏi của tôi là nếu có cách đặt mã perl trực tiếp vào tập lệnh theo lô và yêu cầu chạy cả hai loại tập lệnh.
Tôi đã có một tập lệnh batch thực hiện một số xử lý và gọi một số tập lệnh perl.Có thể chạy Perl và Batch trong cùng một tệp lô không?
Câu hỏi của tôi là nếu có cách đặt mã perl trực tiếp vào tập lệnh theo lô và yêu cầu chạy cả hai loại tập lệnh.
Có là một cách để làm điều này, nhưng nó sẽ không đẹp. Bạn có thể lặp lại mã perl của bạn thành tệp .pl
tạm thời và sau đó chạy tệp đó từ trong số .bat
của bạn.
Có thể.
Trên thực tế, đây chính xác là công cụ pl2bat
thực hiện: nó biến đổi chương trình perl thành tệp hàng loạt nhúng chương trình perl. Có một cái nhìn để pl2bat.bat chính nó.
Vì vậy, bạn có thể lấy số .pl
, chuyển đổi nó bằng pl2bat
và sau đó chỉnh sửa phần hàng loạt nếu bạn cần. Phần lớn nhất của mã lô phải được đặt ở cuối tệp (gần nhãn :end_of_perl
) vì trong mã ở đầu bạn bị giới hạn không sử dụng dấu nháy đơn.
Tuy nhiên:
Vì vậy, tôi đề xuất thay vì viết toàn bộ quy trình trong một chương trình Perl.
Cập nhật: nếu bạn có một kịch bản và một số module Perl mà bạn muốn kết hợp trong một tập tin thực thi duy nhất, bạn có thể kết hợp các tập tin Perl sử dụng fatpack
, và sau đó áp dụng pl2bat
vào kết quả.
Active Perl đã thực hiện việc này trong nhiều năm!
Dưới đây là bộ xương. Bạn chỉ có thể gọi perl sau khi. Bởi vì qua nó, công tắc -x
cho biết bạn sẽ tìm thấy mã perl được nhúng trong tệp này và perl đọc xuống tệp cho đến khi nó tìm thấy một shebang perl (#!...perl
) và bắt đầu thực hiện ở đó. Perl sẽ bỏ qua tất cả mọi thứ qua __END__
và bởi vì bạn đã nói với DOS để goto endofperl
nó sẽ không bận tâm với bất cứ điều gì cho đến khi nó được nhãn.
@rem = '--*-Perl-*--
@echo off
perl -x -S %0 %*
goto endofperl
@rem -- BEGIN PERL -- ';
#!d:/Perl/bin/perl.exe -w
#line 10
use strict;
__END__
:endofperl
Đây chính xác là điều tôi đang tìm kiếm! Tôi sẽ bỏ phiếu cho điều này nhưng nó nói với tôi để đăng ký để làm điều đó. – Rick
Nghĩ về điều đó nhưng nghĩ nó sẽ làm cho bạn thân của tôi khóc. :) – Rick