2016-12-20 14 views
0

PS出力をファイルにリダイレクトしてさらに処理しようとしています。このため 私は次のようなものが動作するはずという期待が、それにはない引数としてcmd.exeをRedMon/cmd.exeを使ってSTDOUT/STDINをファイルに書き込む方法は?

C:\Windows\system32\cmd.exe 

に出力を送信しているプリンタポ​​ートのリダイレクトRedMonを使用しています。 "%1"にはfilenameのユーザー入力が含まれています。

/c >"%1" 

または

/c 1>"%1" 

または

/c |"%1" 

または

/c > "%1" 2>&1 

私は、ファイルにそれを書き込み、バッチファイルに出力を送信する場合、ほとんどどのような作品。

/c WriteOutput.bat "%1" 

ただし、バッチファイルが何らかの形でファイルを変更している私は、バッチファイルを避けたい可能であれば を(...ように空行をスキップし、感嘆符を無視して)。それをファイルに「直接」取得する方法はありますか? プリンタオプションの[Print to FILE]を選択するオプションはありません。私は同じ最終結果が欲しいですが、cmd.exeを使ってそれをさらに処理することができます。 アイデア

編集: これは私が使用したバッチファイルです。最初は空白とスペースを無視します。

@echo off 
setlocal 
set FileName=%1 
echo(>%FileName%.ps 
for /F "tokens=*" %%A in ('more') do (
    echo %%A>>%FileName%.ps 
) 
+0

_しかし、バッチファイルは何らかの形で変更されています(空白行をスキップし、感嘆符を無視するなど)。 "_ - 上記のバッチファイルを表示しない限り、それを修正するには?私は 'for/F'ループ(空行をスキップする)と遅延拡張(感嘆符を失う)を使用していると思います... – aschipfl

+0

本当にありがとうございます@aschipfl、実際には、私が入ったバッチスクリプトを修正するよう求めていませんでしたここではさまざまな変形がStackoverflowからです。代わりに私はバッチスクリプトを避けたいと思います。まあ、それが直接動作しない場合にのみ、おそらくバッチスクリプトに戻る必要があります:-(。 – theozh

答えて

0

これまでのところ、私はまだ、CMD.exe経由でSTDINをRedMon経由でファイルに書き込む直接的な方法を見つけられませんでした。 @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ファイルは、私はポストスクリプト・プリンタのセットアップを経由して「ファイルに印刷」ファイルと異なっています。私は、私が設定できるすべてのプリンタ設定がどちらの場合でも同じであることを確信しています。 なぜ違いがあるのか​​考えている人がいる場合は、教えてください。

関連する問題