首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过RedMon/cmd.exe将STDOUT/STDIN写入文件?

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

Stack Overflow用户
提问于 2016-12-20 23:47:52
回答 1查看 742关注 0票数 1

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

代码语言:javascript
复制
C:\Windows\system32\cmd.exe

作为参数,我希望类似下面这样的东西应该可以工作,但它不是。"%1“包含用户输入的文件名。

代码语言:javascript
复制
/c >"%1"

代码语言:javascript
复制
/c 1>"%1"

代码语言:javascript
复制
/c |"%1"

代码语言:javascript
复制
/c > "%1" 2>&1

如果我将输出发送到一个批处理文件,然后再将其写入文件,这几乎是可行的。

代码语言:javascript
复制
/c WriteOutput.bat "%1"

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

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

代码语言:javascript
复制
@echo off
setlocal
set FileName=%1
echo(>%FileName%.ps
for /F "tokens=*" %%A in ('more') do (
    echo %%A>>%FileName%.ps
)
EN

回答 1

Stack Overflow用户

发布于 2016-12-21 20:53:19

嗯,到目前为止,我还没有找到一种直接的方法来通过CMD.exe通过RedMon将STDIN写到文件中。正如@aschipfl所写的,所有带有for /F的版本都将跳过行并忽略某些字符。

但是,使用下面的批处理脚本(通过RedMon),我在磁盘上得到了一个“外观正确”的文件。

代码语言:javascript
复制
C:\Windows\system32\cmd.exe /c WritePS.bat "%1"

"%1"包含不带扩展名的文件名的用户输入。批处理文件WritePS.bat看起来就像这样简单:

代码语言:javascript
复制
@echo off & setlocal
set FileName=%1.ps
more > "%FileName%"

然而,

生成的Postscript文件不同于我通过Postscript-Printer设置“打印到文件”的文件。我非常确定我可以设置的所有打印机设置在这两种情况下都是相同的。如果有人知道为什么会有不同,请让我知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41246197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档