コマンドプロンプトで実行中に出力をテキストファイルに保存する一般的な構文が分かります。コマンドプロンプトから出力を保存する方法
しかし、私のニーズは異なります。コマンドプロンプトウィンドウでも見たいのですが、テキストファイルに保存します。 > c:\ dirlist.txtを使用するとテキストファイルに保存されますが、コマンドプロンプトウィンドウには表示されません。
私はコマンドプロンプトにもテキストファイルにも保存する必要があります。任意のヘルプ
コマンドプロンプトで実行中に出力をテキストファイルに保存する一般的な構文が分かります。コマンドプロンプトから出力を保存する方法
しかし、私のニーズは異なります。コマンドプロンプトウィンドウでも見たいのですが、テキストファイルに保存します。 > c:\ dirlist.txtを使用するとテキストファイルに保存されますが、コマンドプロンプトウィンドウには表示されません。
私はコマンドプロンプトにもテキストファイルにも保存する必要があります。任意のヘルプ
Windows用のtee
プログラムに相当するものが必要です。 PowerShellを使用できる場合は、you already have what you needを使用してください。それ以外の場合は、システム上で動作する実装についてはgoogleを参照してください。
出力をファイルにリダイレクトし、別のコマンドプロンプト(つまり、tail
に相当)からライブログビューアでそのファイルを確認することもできます。
まず、TEE.BATプログラムを書くのは比較的簡単です。唯一の問題は、コマンドの出力を取得するコマンドであるset /p
コマンドが、ファイルの終わりと空行を区別しないことです。しかし
tee CopyOfFile.txt < File.txt
:
@echo off
:: usage: AnyCommand | TEE filename
setlocal EnableDelayedExpansion
if exist %1 del %1
:nextLine
set line=:EOF
set /p line=
if "!line!" == ":EOF" goto :eof
echo(!line!
echo(!line!>> %1
goto nextLine
あなたは、このバッチファイルが実際にこのように動作することをテストすることがあります。これは、出力が最初の空行(またはファイルの終わり)まで捕獲されることを意味しこのバッチファイルは、それが設計された方法で使用された場合、それが今して失敗します。
type File.txt | tee CopyOfFile.txt
前のラインは時々OK働き、時には示し、店ファイルの最初の行だけです。いくつかのテストを行いましたが、エラーの原因を特定できません。おそらく誰か(jeb?)がこの場合に何が起こっているのかを説明し、解決策を提示する可能性があります。
あなたはAaciniのようなバッチで自分のティーを書くことができますが、欠点はありません。
@ECHO OFF
setlocal DisableDelayedExpansion
for /F "delims=" %%A in ('findstr /n "^" ') do (
set "line=%%A"
setlocal EnableDelayedExpansion
set "line=!line:*:=!"
(echo(!line!)
(echo(!line!) > "%~1"
endlocal
)
最初にアイデアがwalid2meそれはそのサイトのためのより適切なので、スーパーユーザに質問を転送するために投票echo to screen and file in a single line
からです。 – Jon