如何通过RedMon / cmd.exe将STDOUT / STDIN写入文件?

时间:2016-12-20 15:47:52

标签: redirect cmd stdin redmon

我正在尝试将PS输出重定向到文件并进一步处理。 为此,我使用打印机端口重定向RedMon将输出发送到CMD.exe

C:\Windows\system32\cmd.exe

作为论据,我预计像下面这样的东西应该有用,但事实并非如此。 "%1"包含文件名的用户输入。

/c >"%1"

/c 1>"%1"

/c |"%1"

/c > "%1" 2>&1

如果我将输出发送到批处理文件然后将其写入文件,那么几乎可行。

/c WriteOutput.bat "%1"

但是,批处理文件以某种方式改变文件(跳过空行,忽略感叹号等等......) 如果可能,我想避免批处理文件。有没有办法直接得到它"直接"到文件? 选择"打印到文件"在打印机选项中不是我的选择。我想要相同的最终结果,但通过cmd.exe能够进一步处理它。 有什么想法吗?

编辑: 好吧,这是我使用的批处理文件。它在开头忽略了空行和空格。

@echo off
setlocal
set FileName=%1
echo(>%FileName%.ps
for /F "tokens=*" %%A in ('more') do (
    echo %%A>>%FileName%.ps
)

1 个答案:

答案 0 :(得分:1)

好吧,到目前为止,我还没有找到通过RedDon通过CMD.exe将STDIN写入文件的直接方法。正如@aschipfl写的那样,for /F的所有版本都会跳过行并忽略某些字符。

但是,使用以下批处理脚本(通过RedMon),我最终会得到一个正确的查找"文件在磁盘上。

C:\Windows\system32\cmd.exe /c WritePS.bat "%1"

"%1"包含没有扩展名的文件名的用户输入。 批处理文件WritePS.bat看起来很简单:

@echo off & setlocal
set FileName=%1.ps
more > "%FileName%"

然而,

生成的Postscript文件与I" Print to FILE"通过Postscript-Printer设置。我很确定我可以设置的所有打印机设置在两种情况下都是相同的。 如果有人知道为什么会有差异,请告诉我。