【发布时间】:2016-12-20 15:47:52
【问题描述】:
我正在尝试将 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
)
【问题讨论】:
-
“但是,批处理文件以某种方式改变了文件(跳过空行,忽略感叹号等等......)”——除非你不显示上述批处理文件,我们应该如何修复它?我猜你正在使用
for /F循环(跳过空行)和延迟扩展(失去感叹号)...... -
感谢@aschipfl,实际上,我并没有要求修复我从 Stackoverflow 获得的不同变体的批处理脚本。相反,我想避免使用批处理脚本。好吧,只有当它不能直接工作时,我可能需要回到批处理脚本:-(。