我正在尝试将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
)发布于 2016-12-21 20:53:19
嗯,到目前为止,我还没有找到一种直接的方法来通过CMD.exe通过RedMon将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设置“打印到文件”的文件。我非常确定我可以设置的所有打印机设置在这两种情况下都是相同的。如果有人知道为什么会有不同,请让我知道。
https://stackoverflow.com/questions/41246197
复制相似问题