2013-04-14 70 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