-2

私は Windows 7 を使用しています。それぞれ 1 つの電子メール メッセージを含む多数のテキスト ファイルがあります。それぞれ次のように始まります。

FROM: 人 TO: 別の人 日付: 2011 年 1 月 1 日 18:12:00 件名: なんでも

これらのファイルの名前を次のように変更したいと思います。

2011-01-01 18.12 ある人から別の人へのメール、Whatever.txt について

私が知っているのはバッチ プログラミングだけで、よくわかりません。これを私がすぐに理解できるプロジェクトに制限する目的で、私の最善の解決策は、重要なデータをテキスト ファイルに抽出し、それをバッチの名前変更ファイルにマッサージできるようにすることだと思います。

その場合、私が探しているのは、データをテキスト ファイル内の 1 行に抽出するバッチ ファイルです。このバッチ ファイルは、全体的な編集を行って形にすることができます。つまり、次の形式のテキスト行を探していると思います。

[現在のファイル名] [抽出された日時文字列] [from] [to] [件名]

例:

file01.txt 2011 年 1 月 1 日 18:12:00 人から別の人へ

そのような行があれば、それらを Excel で非常に迅速に名前変更コマンドに解析できます。

ありがとう!

4

1 に答える 1

3

あなたが Windows 7 を使用していることを考えると、別の方法を提案したいと思います。Windows Powershell は、非常に便利なコマンド ツールで、さまざまな用途に使用できます。私はあなたの問題を完全に解決したと思います:

$folder = "C:\..."

$regex = "FROM: (.*) TO: (.*) DATE: (.*) at (.*) SUBJECT: (.*)"

$files = Get-ChildItem $folder *.txt 

ForEach ($file in $files) {  
        $line =  (Get-Content $file.FullName -TotalCount 1)
        $match =  ([regex]$regex).matches($line)[0]
        $date = [DateTime]($match.Groups[3]).Value + [TimeSpan]($match.Groups[4]).Value
        $from = ($match.Groups[1])
        $to = ($match.Groups[2])
        $subject = ($match.Groups[5])

        # You can change the naming format in the brackets below
        Rename-Item $file.FullName -NewName ( $date.ToString("yyyy-MM-dd_HH-mm-ss") + " Email From " + $from + " to " + $to + " RE " + $subject)
}

いくつかの仮定があります (一致が常に見つかるなど)。命名形式などを簡単に調整できます。このコードをスクリプト (.ps1) として保存し、Powershell プロンプト (powershell.exe) で実行します。

于 2011-04-18T03:34:11.770 に答える