2

間違った日付形式で名前が付けられた 1500 個のファイルがあります。名前を変更したいと思います。それができるツールはありますか?それ以外の場合は、php コードの一部。

ファイル名は次のとおりです: ddmmyyyy.xls (例: 2010 年 1 月 15 日の場合は 15012010)

yyyymmdd.xls (例: 20100115.xls)

一度に1500個のファイルに対してこれを行う方法についての手がかりはありますか?

BR。アンダース


更新:回答の1つで提案されているMP3TAGも試しました。それは無料のツールであり、仕事もしました。使い方を理解するのに時間がかかりました。試してみたい場合は、次のようにします。

  1. 構成で編集可能なファイルのリストに xls (またはその他の形式) を追加します。
  2. ファイルをロードするフォルダーを選択し、編集するペインでファイルをマークします
  3. 「変換 - クイック」ボタンをクリックしました。将来の使用のためにスキーマを保存することもできますが、その方法がわかりませんでした。
  4. 「変換-クイック」をクリックした後、「正規表現を使用」を選択します(正規表現オプションのみ)

そして、名前変更を処理するための情報を追加するだけです。私の場合:

  • フィールド: _FILENAME
  • 差出人: ([0-9]{2})([0-9]{2})([0-9]{4})
  • へ: $3-$2-$1

15012010.xls (ddmmyyyy.xls) という名前のすべてのファイルは、2010-01-15.xls という名前になります。

4

6 に答える 6

3

ここから始めます (テストはしていませんが、アイデアは得られるはずです)。

$files = glob('your/folder/*.xls');

foreach($files as $file) {

    preg_match_all('/^(\d{2})(\d{2})(\d{4})\.xls$/', basename($file), $matches);

    if ( ! $matches) continue;        

    $year = $matches[0][3];
    $month = $matches[0][2];
    $day = $matches[0][1];

    $newFilename = $year . $month . $day . '.xls'; 
    rename  ( $file, dirname($file) . '/' . $newFilename );

}
于 2010-01-14T23:39:40.543 に答える
1

ファイルを含む Linux マシンがある場合は、bash を使用して次のことができます。

for f in *.xls; do
    mv $f "$(echo $f | cut -c4-8)$(echo $f | cut -c3,4)$(echo $f | cut -c1,2).xls"
done
于 2010-01-14T23:42:16.097 に答える
0

あなたがbashを持っているなら

#!/bin/bash

shopt -s nullglob
for xls in [0-9]*.xls
do
    day=${xls:0:2}
    mth=${xls:3:2}
    yr=${xls:4:4}
    echo mv "$xls" "${yr}${mth}${day}.xls"
done

外部ツールは必要ありません。

于 2010-01-15T01:43:35.143 に答える
0

ファイル名は次のとおりです: ddmmyyyy.xls (例: 2010 年 1 月 15 日の場合は 15012010)

yyyymmdd.xls (例: 20100115.xls)

このスクリプトを使用します。

# Script RenameYYYYMMDD.txt
var str dir, list, file, newname, dd, mm
lf -r -n "*.xls" $dir > $list
while ($list <> "")
do
    lex "1" $list > $file ; stex -p "^/^l[" $file > $newname ; chex "2]" $newname > $dd
    chex "2]" $newname > $mm ; sin "^.^l" ($mm+$dd) $newname > null
    system rename ("\""+$file+"\"") $newname
done

このスクリプトはバイタースクリプティング ( http://www.biterscripting.com ) です。最初にテスト フォルダーでスクリプトをテストします。

テストするには、スクリプト コードをファイル「C:/Scripts/RenameYYYYMMDD.txt」に保存し、次のコマンドを入力します。

script "C:/Scripts/RenameYYYYMMDD.txt" dir("C:/path/to/test folder")

このコマンドは、ディレクトリ "C:/path/to/test folder" の下にあるすべてのファイル ddmmyyyy.xls の名前を yyyymmdd.xls に変更します。

于 2010-02-01T15:14:48.007 に答える
0

ファイル名のパターン変換を実行できるツールはMp3tagです。

を選択し、 を選択convertfilename - filenameます。

他のツールもあると思います!

(この答えは実際にはStackOverflowの精神ではありませんが、OPは必ずしも自動化されたソリューションを探しているわけではないと思います...)

于 2010-01-14T23:50:42.147 に答える
0

alex functionに基づいていますが、これは.xls拡張子を正しく追加します。

foreach (glob('/path/to/your/*.xls') as $file)
{
    rename($file, dirname($file) . '/' . substr(basename($file), 4, 4) . substr(basename($file), 2, 2) . substr(basename($file), 0, 2) . '.xls');
}
于 2010-01-14T23:52:18.543 に答える