2013-04-14 119 views
7

我想用Evernote's ENScript.exe創建新的筆記在標準輸入,輸入文字和標題作爲參數。問題在於ENScript只允許通過文件或標準輸入輸入文本。僞造Windows命令行

對於我當前的解決方法,我使用.bat文件將參數寫入文件,然後調用ENScript並指向該文件的/s參數將其讀入,但強制默認標題爲臨時文件的文件名(我不想要的行爲)。

所以我的問題是:有沒有一種方法來「假冒」的Windows命令行,這樣我可以用一個參數(從另一個程序通過)來生成註釋文本上的標準輸入?該腳本的開始將像

ENScript.exe createNote /i %1 

與標準輸入以下。

回答

8

您正在尋找捕獲一個命令的輸出並且將其作爲輸入到下一個管的操作。這是大多數操作系統的標準功能。

的Windows CMD管道符號是|

你的腳本可以是簡單的:

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

如果你的腳本被稱爲MakeNote.bat,你會這樣稱呼它

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

人們可以「假」通過使用重定向標準輸入:

command args... < filename args... 

其中<裝置輸入重定向(下稱「<而不是終端後讀取從文件名標準輸入」)。

(請注意,舊的Windows或DOS程序可以從終端直讀,使得輸入重定向沒用;這希望不會因爲最近申請的東西作爲Evernote的。)

對於示例:

ENScript.exe < "%1" 

隨意在重定向之前或之後添加更多參數。例如,如果您的腳本將被調用爲script filename title,您將需要調用ENScript /i "%2" < "%1"

+0

第二個「args ...」沒有任何意義。如果數據源是帶或不帶參數的命令,則使用'|'管道而不是'<'。 –

+0

如果在嘗試測試時出現「系統找不到指定文件」的錯誤,是否意味着它只有在直接從終端讀取時纔會起作用?剛試過'ENScript.exe createNote <「測試123'並得到了錯誤 – Ryan

+0

@BenVoigt文件名沒有得到論據。我試圖證明,在重定向的命令行並不重要@Ryan做的。您有一個名爲'測試123'文件?這就是它會讀取註釋文本。 – michaelb958