Mở tệp bó và thực thi các lệnh từ đó


2

Ý định của tôi là chạy một kịch bản perl latexdiff.pl từ một phiên bản di động của perl. Có một tập tin bó portableshell.bat trong đó thiết lập môi trường cho perl. Nếu tôi mở nó và gõ perl latexdiff.pl additional_arguments, chương trình hoạt động độc đáo. Tuy nhiên, tôi muốn tự động hóa nó. Tôi đã tạo một tệp bó useLatexdiff.bat và đặt những thứ sau vào nó:

portableshell.bat
perl ..\MiKTeX\texmfs\install\scripts\latexdiff\latexdiff.pl

Môi trường perl được thiết lập đúng, nhưng dòng thứ hai không được thực thi. Làm thế nào tôi có thể đạt được để thực hiện dòng thứ hai?

Lưu ý: Đây là một câu hỏi phổ biến. Một trường hợp sử dụng khác là mở shell Unix và sau đó thực hiện các lệnh Unix từ shell đó.

Câu trả lời:


0

Vấn đề của bạn là một tệp bó hoạt động như sau: Nó thực thi một lệnh và đợi lệnh đó kết thúc trước khi chuyển sang tiếp theo.

Vì vậy, trong trường hợp của bạn, nó chờ đợi tại portableshell.bat cho đến khi nó biến mất, điều này có thể không xảy ra.

May mắn thay, có một số phương pháp bạn có thể làm để thực hiện một lệnh và bỏ qua bước tiếp theo mà không cần chờ phương thức đầu tiên kết thúc. Để gọi các tệp bó, bạn có thể sử dụng lệnh filename.bat để gọi nó và ngay lập tức chuyển sang hàng tiếp theo.

Tệp bó của bạn sẽ trông như thế này:

call portableshell.bat
perl ..\MiKTeX\texmfs\install\scripts\latexdiff\latexdiff.pl

Nếu bạn có các tệp thực thi, chẳng hạn như perl mà bạn muốn có điều tương tự xảy ra, hãy sử dụng lệnh start.

Mặc dù cách trên sẽ hoạt động, nếu không, bạn có thể muốn chỉnh sửa tệp portableshell.bat và nối thêm lệnh teh perl ở cuối.


Vấn đề là portableshell.bat có thể mở ra một cửa sổ shell mà lệnh tiếp theo cần được thực thi trong và ngoài cửa sổ shell đó, môi trường vẫn không được "thiết lập" vì đây là một ứng dụng di động. Đang chạy perl ngẫu nhiên sau tập tin lô có thể sẽ dẫn đến một file not found lỗi. Tôi cảm thấy rằng đây có thể là kịch bản dễ nhất khi sử dụng AutoIt hoặc AutoHotkey.
Mokubai

Đưa call lệnh trước không thay đổi gì cả. @Mokubai Tôi đang làm việc với một bộ các chương trình di động tương tác trên một phím USB. AutoIt hoặc AutoHotkey có cần các chương trình bổ sung để hoạt động không? Nếu có thể, tôi sẽ vẫn với dấu nhắc lệnh của Windows.
Zoltán Csáti

Bạn không thể chỉnh sửa tệp portableshell.bat và đặt lệnh perl ở cuối?
LPChip

@LPChip Cảm ơn, đặt lệnh perl ở cuối portableshell.bat tập tin - mặc dù không phải là rất mô-đun - hoạt động. Bạn có thể nối thêm câu trả lời của mình để những người dùng sau này có thể tìm thấy nó dễ dàng hơn.
Zoltán Csáti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.