1

現在、ログファイル(以下を参照)があり、スキャンしたファイルのリストを繰り返して引き出す必要があります。次に、そのファイルのリストを使用して、スキャンしたファイルを別のディレクトリにコピーします。

したがって、この場合は、c:\ tools \ baregrep.exe c:\ tools\baretail.exeなどを通過してプルします。

次に、それらを同じファイル構造のc:\ folder\SafeFolderなどのフォルダーに移動します。

失敗したスキャンでの出力のサンプルがあればいいのにと思いますが、これで良いスタートを切ることができ、おそらく残りを理解することができます

ログファイルのSymantecイメージ

事前のおかげで、私はあなたが私を貸してくれるどんな助けにも本当に感謝しています。

4

3 に答える 3

1

この質問は Java としてタグ付けされています。私は Java が大好きですが、この問題は Perl などの言語で簡単かつ迅速に解決できるものです (したがって、最終結果のみが必要で、実行する必要がない場合)特定の環境では、代わりにスクリプト言語を使用したい場合があります)。

動作する実装ではありませんが、以下の行に沿ったコードが perl で必要なすべてです。

use File::Copy;
my $outdir = "c:/out/";
while(<>)
{
  my ($path) = /Processing File\s+\'([^\']+)\'/;
  my ($file) = $path =~ /(.*\\)+([^\\]+)/;
  if (($file) && (-e $path))
  {
    copy($path,$outdir . $file);
  }
}
于 2012-01-04T22:37:45.500 に答える
0

それは簡単です。

  1. NEW_LINE を区切り記号として使用して、ログ ファイルを 1 行ずつ読み取ります。これが小さなファイルの場合は、String.split("\n") または StringTokenizer を介して自由に読み込んで処理してください

  2. 各行をループするときに、その文字列に 'Processing File' が含まれているかどうかを検出する簡単なテストを行う必要があります。

  3. 存在する場合は、正規表現 (難しい) または単純な解析を使用してファイル名をキャプチャします。['] 内にある必要があるため、['] の最初の出現を検出し、2 番目を検出して、その間の文字列を取得します。

  4. 文字列が有効な場合 (java.io.File を使用してテストできます)、または既存の場合、ファイル名を別のファイルにコピーできます。スターターのメモリ制限のためにJavaにコピーしないことをお勧めしません。

  5. 代わりに、ファイルの文字列をコピーしてバッチ ファイルを形成し、Windows BAT や Bash スクリプトなどの OS スクリプトを使用して一度にコピーします (例: cp 'filename_from' 'copy_to_dir')。

実際の例が必要であることをお知らせください

よろしく

于 2012-01-04T22:01:30.413 に答える
0

これでうまくいくはずです。さあ、あなたのソリューションに適応してください!

public static void find(String logPath, String safeFolder) throws FileNotFoundException, IOException {
    ArrayList<File> files = new ArrayList<File>();

    BufferedReader br = new BufferedReader(new FileReader(logPath));
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = br.readLine()) != null) {
        Pattern pattern = Pattern.compile("'[a-zA-Z]:\\\\.+?'");
        Matcher matcher = pattern.matcher(line);
        if (matcher.matches()) {
        }
        if (matcher.find()) {
            files.add(new File(matcher.group()));
            System.out.println("Got a new file! " + files.get(files.size() - 1));
        }
    }

    for (File f : files) {
        // Make sure we get a file indeed
        if (f.exists()) {
            if (!f.renameTo(new File(safeFolder, f.getName()))) {
                System.err.println("Unable to move file! " + f);
            }
        } else {
            System.out.println("I got a wrong file! " + f);
        }
    }
}
于 2012-01-04T23:32:36.497 に答える