1

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

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
)
4

1 回答 1

1

好吧,到目前为止,我还没有找到通过 RedMon 通过 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 文件与我通过 Postscript-Printer 设置“打印到文件”的文件不同。我很确定在这两种情况下我可以设置的所有打印机设置都是相同的。如果有人知道为什么会有所不同,请告诉我。

于 2016-12-21T12:53:18.700 回答