人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

前任者が作成したWindows2003サーバーのパフォーマンスログを設定するバッチがあるのですが、
いまち、下記のコマンドの意味がわかりません。

>>%LFILE% は、リダイレクトでログに書くというのは分かるのですが、
2とか&1が何を表しているのかわかりません。

2>&1>> %LFILE%とは何をやっているのでしょうか。

echo パフォーマンスログスタート >> %LFILE%
logman start counter perflog 2>&1>> %LFILE%

●質問者: kuruma_neko
●カテゴリ:コンピュータ
✍キーワード:echo コマンド サーバー スタート バッチ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● degucho
●35ポイント

「2>&1>>」で検索すると出てきますが、普通のメッセージとエラーメッセージを合体しています

http://www.ne.jp/asahi/hishidama/home/tech/windows/dos.html#redi...

stdoutとstderrの違いです


2 ● ken3memo
●35ポイント

そのバッチファイルを呼んでいる親の部分を見るとヒントが隠されているかも。

%は置き換えだと思うので、

バッチファイル 引数 で検索

http://ykr414.com/dos/bat.html

バッチファイル 環境変数 で検索

http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdat...

このあたりから探ってみては?

何かの参考となれば幸いです。


3 ● mattn
●10ポイント

1は標準出力、2はエラー出力を表します。

例えば、標準出力に"hello stdout"、エラー出力に「hello stderr」と出力する以下のプログラムに対して

#include <stdio.h>
int main() {
fputs("hello stdout\n", stdout);
fputs("hello stderr\n", stderr);
return 0;
}

コマンドプロンプトから以下の様に実行します。(イメージだけですのでコンパイル等は必要ないです)

C:\>foo
hello stdout
hello stderr

それぞれどちらに出力されたのかは目見るのは難しいです。標準出力(1)をファイル"log"に出力します。

C:\>foo 1> log
hello stderr

C:\>type log
hello stdout

1を指定したので標準出力のみがファイルに出力され、エラー出力は画面に表示されました。また今度は

C:\>foo 2> log
hello stdout

C:\>type log
hello stderr

2を指定したのでエラー出力のみがファイルに出力され、標準出力は画面に出力されました。今回の「2>&1」というのはエラー出力を標準出力と同じ出力先にするという意味になります。

C:\>foo > log 2>&1

C:\>type log
hello stdout
hello stderr

つまり、前任者の方はあるコマンドが出力する標準出力とエラー出力を両方同じファイルに出力しようとして書いた処理になります。実際には%LFILE%という環境変数LFINEで設定されたファイルになります。

ただ残念ながら、書かれておられる処理ではおそらく正しく動きません。"2>&1"は最初の">>%FLILE%"よりも後に置かれるべきです。


4 ● t-wata
●10ポイント

本来コメントに書く話ですが、コメントがつけられないみたいなのでこちらに。

2>&1>>%LFILE%

だと、標準出力のみをLFILEに出力して、標準エラーがもとの標準出力に出力されます(つまり標準エラーはファイルには出力されない)。

たぶん前任者は

>>%LFILE% 2>&1

ってやりたかったんじゃない?これだと標準出力も標準エラーもLFILEに出力されます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ