我正在尝试将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
)
答案 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设置。我很确定我可以设置的所有打印机设置在两种情况下都是相同的。 如果有人知道为什么会有差异,请告诉我。