2017-01-18 10 views
1

特定のフォルダ内のすべてのCSVファイルのファイル名をログファイルに表示するBATファイルがあります。また、これらのCSVファイルの内容も表示されます。ファイルの名前とその内容を表示するログファイルを作成する方法

dir /b > MM.LOG 
type *.csv >> MM.LOG 

それが出力されている方法は次のとおりです。

File1 Name/File1 Content 
File2 Name/File2 Content 

追加の質問を:それはのように表示するために取得する方法は

File1 Name 
File2 Name 
File1 Content 
File2 Content 

あります、 "ログ"ファイルがあるようです.LOGではなく.txtとして保存します。これをどうすれば解決できますか?

+0

ワイルドカードを使用するタイプは、常にコンテンツの前にあるファイル名を出力します。すべてのコンテンツ行にファイル名の接頭辞を付けたいですか? – LotPings

+0

1. 'dir'コマンドラインを' dir/B * .csv'に変更して '.csv'以外のファイルをインクルードする必要がありました。 2.あなたは文字通りファイル名を持ち、その後に '/'が続き、内容が続いていますか? – aschipfl

+0

はい、文字通りファイル名の後に、すべての行の内容が続きます。私は/ – Tori

答えて

0

type commandSTDOUTストリームへredirectedかもしれSTDERRストリームにそれぞれ入力したファイル名またはパスを返します。

type *.csv > MM.LOG 2>&1 

1> MM.LOGに相当用語> MM.LOG、ストリームでデータをリダイレクト(STDOUT)をログファイルに追加します。 2>&1は、ストリーム(STDERR)のデータを、ストリーム1の場合と同じターゲットにリダイレクトするため、MM.LOGとなります。

+0

ありがとうございました!これは私が望む出力を私に与えました。 もう少し説明していただけますか? 2>&1はどういう意味ですか? – Tori

+0

私は答えに何が起こるかを簡単に説明しようとしました。 [リダイレクトの記事](http://ss64.com/nt/syntax-redirection.html)も参照してください... – aschipfl

0

これはいかがですか? ?*などワイルドカードが使用されている

for /f %%a in ('dir /b *.csv') do for /f "usebackq tokens=*" %%b in (`type %%a`) do echo %%a/%%b >> MM.LOG 
+0

を省略できます。ありがとうございます。残念ながら、私はこれを試しても、ログファイルを作成しませんでした。 – Tori

関連する問題