2013-05-15 6 views
8

助けてください!私はバッチファイルを作成するのが初めてです。フォルダ内の特定の拡張子を持つファイルを検索するバッチファイルを作成するにはどうすればよいですか?

私は次のことを行うバッチファイルを作成しようとしています:ファイルの

  1. 検索(複数可)を、特定のファイル拡張子を持つ(つまり、.docxの)フォルダ内の
  2. 出力ファイル名(両方ともTEST1:テキストファイル内のテキストファイル(.txt)
  3. 秒)と拡張子は、私は、ファイル名たとえば、

、「フォルダ1」この3つのファイルを持って前にインデックスを追加します。 docx、test2.docx、test3.xlsx バッチファイルは、拡張子が.docxの3つのファイルを検索し、テキストファイルに出力します。 search_result.txtでsearch_result.txt)

、それはこの形式になります。ここで

1 test1.docx
2 test2.docx

を私はこれまで1位をしているているものです上記の#2の項目がありますが、#3の実装には手助けが必要です。

ありがとうございました。

+0

何「ファイル名の前にインデックスを追加する」という意味ですか? –

+0

私は彼が 'インデックス番号' /シリアル番号:1、2、3を意味すると思います... @ robert-harvey – tgkprog

+0

も参照してくださいhttp://stackoverflow.com/questions/2913231/how-do-i-incrementa-a- f-ループのためのdos-variable-in-for-loop –

答えて

4
@echo off 
setlocal enabledelayedexpansion 
set /a counter=1 
for /r %%i in (*.docx) do (

    echo !counter! %%~nxi >> search_result.txt 
    set /a counter=!counter!+1 
) 
endlocal 
0

インデックスは単に一致する数の増分カウントであると仮定すると、変数を使用してループの各繰り返しで増分することができます。これを有効にするには、変数の遅延展開を有効にする必要があります。これにより、ループが最初に評価されたときに変数が消費されるのを防ぎ、繰り返しごとに同じ変数を使用します。その後、!counterを使用して変数を参照することができます。 %expanded%ではなく

私はこのような何かが動作するはずだと思うけど、あなたがそれを微調整する必要がある場合がありますので、私はそれを実行していない:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set /a counter=1 
for /r %%i in (*.docx) do (
    echo !counter! %%~nxi >> search_result.txt 
    set /a counter=!counter!+1 
) 
endlocal 

は遅延展開にいくつかの詳細は、この答えをチェックアウト:How do I increment a DOS variable in a FOR /F loop?

関連する問題