伪造Windows命令行上的标准输入

时间:2013-04-14 01:33:50

标签: windows cmd evernote

我想使用Evernote's ENScript.exe创建新笔记,输入文本和标题作为参数。问题是ENScript只允许通过文件或标准输入输入文本。

对于我当前的解决方法,我使用.bat文件将参数写入文件,然后使用指向该文件的/s参数调用ENScript来读取它,但这会强制默认标题为临时文件文件的文件名(我不想要的行为)。

所以我的问题是:有没有办法在Windows命令行上“伪造”标准输入,以便我可以使用参数(从另一个程序传递)来生成注释文本?脚本的开头就像是

ENScript.exe createNote /i %1

以下标准输入。

3 个答案:

答案 0 :(得分:10)

您正在寻找一个管道操作,它捕获一个命令的输出并将其作为输入发送给下一个命令。这是大多数操作系统的标准功能。

Windows CMD的管道符号为|

您的脚本可以像以下一样简单:

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

如果您的脚本名为MakeNote.bat,您可以将其称为

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

答案 1 :(得分:0)

可以使用重定向来“伪造”标准输入:

command args... < filename args...

其中<表示输入重定向(“从<而不是终端读取文件名的标准输入”)。

(请注意,旧的Windows或DOS程序可能直接从终端读取,导致输入重定向无用;这有望不适用于Evernote最近的内容。)

对于你的例子:

ENScript.exe < "%1"

可以在重定向之前或之后添加更多参数。例如,如果您的脚本将被调用为script filename title,则需要调用ENScript /i "%2" < "%1"

答案 2 :(得分:0)

echo Note text>Title&ENScript.exe createNote /s Title