2013-04-14 21 views
7

Tôi muốn sử dụng Evernote's ENScript.exe để tạo ghi chú mới, nhập văn bản và tiêu đề làm đối số. Vấn đề là ENScript chỉ cho phép văn bản được nhập thông qua một tập tin hoặc thông qua đầu vào tiêu chuẩn.Giả mạo đầu vào tiêu chuẩn trên dòng lệnh của Windows

Đối với giải pháp hiện tại, tôi sử dụng tệp .bat để ghi đối số vào tệp, sau đó gọi ENScript với đối số /s trỏ tới tệp để đọc tệp đó, nhưng buộc tiêu đề mặc định cho tên tệp của tệp tạm thời (một hành vi tôi không muốn). Vì vậy, câu hỏi của tôi là: Có cách nào để "giả" đầu vào tiêu chuẩn trên dòng lệnh Windows để tôi có thể sử dụng một đối số (thông qua từ một chương trình khác) để tạo ra các văn bản lưu ý? Không. Sự khởi đầu của tập lệnh sẽ là một cái gì đó như

ENScript.exe createNote /i %1 

với đầu vào tiêu chuẩn sau.

Trả lời

8

Bạn đang tìm kiếm một hoạt động đường ống để ghi lại đầu ra của một lệnh và gửi nó làm đầu vào cho lệnh tiếp theo. Đây là một khả năng tiêu chuẩn trong hầu hết các hệ điều hành.

Biểu tượng ống cho Windows CMD là |

kịch bản của bạn có thể đơn giản như:

@echo %~2|@ENScript.exe createNote /i %1 

Nếu kịch bản của bạn được gọi là MakeNote.bat, bạn sẽ gọi nó như

MakeNote "your title" "This is the text of your note" 
0

Người ta có thể "giả" tiêu chuẩn đầu vào bằng cách sử dụng chuyển hướng:

command args... < filename args... 

nơi < nghĩa chuyển hướng đầu vào ("đọc đầu vào tiêu chuẩn từ tên tập tin sau khi < thay cho thiết bị đầu cuối").

(Lưu ý rằng các chương trình Windows hay DOS cũ có thể đọc trực tiếp từ thiết bị đầu cuối, làm cho chuyển hướng đầu vào vô dụng, điều này hy vọng sẽ không áp dụng đối với một cái gì đó như gần đây như Evernote.)

Ví dụ của bạn:

ENScript.exe < "%1" 

Hãy thoải mái thêm nhiều đối số trước hoặc sau khi chuyển hướng. Ví dụ: nếu tập lệnh của bạn sẽ được gọi là script filename title, bạn sẽ muốn gọi ENScript /i "%2" < "%1".

+0

Thứ hai "args ..." không có ý nghĩa. Nếu nguồn dữ liệu là một lệnh có hoặc không có đối số, sử dụng '|' pipe thay vì '<'. –

+0

Nếu tôi gặp lỗi "Hệ thống không thể tìm thấy tệp được chỉ định" khi cố gắng kiểm tra điều này, điều đó có nghĩa là nó sẽ chỉ hoạt động nếu nó đọc trực tiếp từ thiết bị đầu cuối? Chỉ cần thử 'ENScript.exe createNote <" Kiểm tra 123' và nhận được lỗi. – Ryan

+0

@BenVoigt Tên tệp không nhận được các đối số; Tôi đã cố gắng chứng minh rằng nơi chuyển hướng nằm trên dòng lệnh không quan trọng. @Ryan Do bạn có một tập tin có tên 'Kiểm tra 123'? Đó là những gì nó sẽ đọc văn bản ghi chú. – michaelb958

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