0

10個のフォルダーのクラスターがあり、それぞれに1000個のプログラムファイルがあります。これらのテキストファイルでMISSING文字列を検索する必要があります。すべてのファイルは$O123456.MIN%で始まる必要があります(123456はランダムなファイル名です)。文字列が存在するかどうかを確認する方法は知っていますが、文字列が存在しないかどうかを確認するにはどうすればよいですか?

それが特定されたら、どのファイルに文字列がないのか、レポートまたはそのファイルのコピーを別のフォルダーに移動したいと思います。

4

2 に答える 2

0

あなたの要件は明確ではありません。私は次のことを想定しています:

1 - 10 フォルダーの「クラスター」は、特定のルート フォルダー内のすべてのフォルダーで構成されます。

2 - テキスト ファイルの拡張子はすべて .txt です

3 - 最初の行が で始まらない、指定されたフォルダー内のすべてのファイルを報告する必要があります。ここで$O*.MIN%、* は 1 つ以上の文字を表し、大文字OMIN小文字が区別されます。

@echo off
setlocal
set "rootFolder=c:\yourRootPath"
set "fileMask=*.txt"
set "outFile=missing.txt"

>"%outFile%" (
  for /d %%D in ("%rootFolder%") for %%F in ("%%D\%fileMask%") do (
    findstr /nbr "$O..*\.MIN%%" "%%F" | findstr /bl "1:" >nul || echo %%F
  )
)

実際の要件が異なる場合、コードの変更はあまり必要ありません。たとえば、次の変更は簡単に実装できます。

  • ファイル マスクを変更する
  • 検索で大文字と小文字を区別しないようにする
  • ルート フォルダー内のすべてのフォルダーを再帰的に処理する
  • 特定のフォルダのリストを処理する
  • ランダムファイルで使用できる文字および/または文字数を制限します (あなたの 0123456)
于 2013-01-17T19:34:38.480 に答える
0

これにより、文字列を持たないすべてのファイルが file に出力されますMissing.txt

for %%a in (*.*) do (
find "$O123456.MIN%" %%a
if %errorlevel%==1 echo %%a >Missing.txt
)
于 2013-01-17T17:07:40.123 に答える