我想使用Evernote's ENScript.exe创建新笔记,输入文本和标题作为参数。问题是ENScript只允许通过文件或标准输入输入文本。
对于我当前的解决方法,我使用.bat文件将参数写入文件,然后使用指向该文件的/s
参数调用ENScript来读取它,但这会强制默认标题为临时文件文件的文件名(我不想要的行为)。
所以我的问题是:有没有办法在Windows命令行上“伪造”标准输入,以便我可以使用参数(从另一个程序传递)来生成注释文本?脚本的开头就像是
ENScript.exe createNote /i %1
以下标准输入。
答案 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