Как записать STDOUT/STDIN через RedMon/cmd.exe в файл?

Я пытаюсь перенаправить вывод 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
)

1 ответ

Ну, до сих пор я не нашел прямого способа записи STDIN через RedMon через CMD.exe в файл. Как писал @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. Я уверен, что все настройки принтера, которые я могу установить, одинаковы в обоих случаях. Если у кого-то есть идея, почему может быть разница, пожалуйста, дайте мне знать.

Другие вопросы по тегам