前任者が作成したWindows2003サーバーのパフォーマンスログを設定するバッチがあるのですが、

いまち、下記のコマンドの意味がわかりません。

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

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

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

回答の条件
  • 1人2回まで
  • 登録:2009/12/02 10:34:35
  • 終了:2009/12/09 10:35:03

回答(4件)

id:degucho No.1

degucho回答回数245ベストアンサー獲得回数622009/12/02 10:40:39

ポイント35pt

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

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

stdoutとstderrの違いです

id:ken3memo No.2

ken3memo回答回数241ベストアンサー獲得回数742009/12/02 10:56:15

ポイント35pt

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

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

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

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

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

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

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

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

id:mattn No.3

mattn回答回数104ベストアンサー獲得回数232009/12/02 11:09:58

ポイント10pt

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%"よりも後に置かれるべきです。

id:t-wata No.4

t-wata回答回数82ベストアンサー獲得回数132009/12/02 20:48:11

ポイント10pt

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

2>&1>>%LFILE%

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

たぶん前任者は

>>%LFILE% 2>&1

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません