2012-02-18 6 views
0

私はファイル名が特定の単語で始まるディレクトリ内のファイルのみを反復するようにbatファイルを作成しようとしています。例については :
のcompanyName .module1.exe
のcompanyName.bat経由でディレクトリ内の特定のファイルを繰り返します。

を.module2.dll私はファイルを反復処理する方法を知っているが、特定の条件のために自分の名前を確認する方法を知りません。

答えて

1

あなたのバッチファイルに次の行を追加します

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA) 

このスクリプトを、現在の作業ディレクトリ内のcompanyName接頭辞で始まりますechoすべてのファイル(ファイルのみ)。 echoを、代わりに実行する他のコマンドと置き換えてください。

アップデート1:別のディレクトリに見えるためには、あなたのいずれかを行うことができ

for /F "eol=: tokens=*" %%A in ('dir /A-D /B "pathToLookIn/companyName*"') do (echo %%~fA) 

またはpathToLookInは、完全修飾パスまたは相対パスをある

pushd \ & cd "pathToLookIn" & (for /F "eol=: tokens=*" %%A in ('dir /A-D /B "companyName*"') do (echo %%~fA)) & popd 

アップデート2:私は@dbenhamが提案されているよう;で始まるファイル名を処理するためにfor /Fループを更新しました。 dirの出力を反復することはエラーが発生しやすいと多くの場合、Unicode文字をマングルすること

for %%f in (companyName*) do (
    ... 
) 

注:ファイルを反復処理する方法を知っていれば

+0

あなたのコードは完璧に動作しますが、特定のディレクトリを使用する場合はすべてのファイルが必要です。私は次のコマンドを使用します FOR/F "tokens = *" %% A in( 'dir/B "Company *"/b D:\ DLLS \ current ")do(ECHO %% A) どこが間違いですか? – Polaris

+0

現在の作業ディレクトリを特定のディレクトリに変更する方法は? – Polaris

+0

私は今道路に出ています。私はすぐに私の答えを更新します。 – mrvincenzo

1

まあ、その後、ちょうどその知識を使用しています。 forは反復処理が可能であるため、劣位オプションを使用する必要はほとんどありません。

+0

あなたはそれを数秒で打ち負かしています:) FOR/F ...( 'DIR ...')は、DO節がディレクトリリストを変更する場合にのみ必要です。単純なFORステートメントは不確定です。変更が表示される場合とされない場合があります。 FOR/Fバージョンは、DO句を処理する前にDIRの出力をバッファします。したがって、常に変更から絶縁されます。 – dbenham

+0

ああ、ありがとう。それは私が決して考えていなかった制限ですが、私はUnicodeのもの(Rasterフォントで)をよく見かけます。 – Joey

関連する問題