1

日付を比較するバッチ ファイルがあります。問題は、異なるセットアップでテストする必要があることです。異なる言語は異なる日付形式を意味します。

例: Test.log ファイルの変更日を取得します (ロケールの日付形式がわからない場合)

for %%i in (c:\Test.log) do (
call :testprocess %%~ti
)

Test.log の更新日を yyyy/MM/dd にフォーマットしたい。

ロケール日付の形式が何であるかを知らずに、どうすればそれを達成できますか?

4

1 に答える 1

1

これに関する解決策を見つけました。参照のリンクを失いました。だから私はいくつかのコードを微調整し、私のニーズに合わせてこれを使用します。

    for %%i in (c:\Test.log) do (
    call :testprocess %%~ti
    )

    :testprocess
    set temptime=%1

レジストリでキー International を検索して、iDate と sDate の値を取得します。

    set KEY_DATE="HKCU\Control Panel\International"
    FOR /F "usebackq skip=4 tokens=1,3" %%A IN (`REG QUERY %KEY_DATE% /v iDate 2^>nul`) DO set iDate=%%B
    FOR /F "usebackq skip=4 tokens=1,3" %%A IN (`REG QUERY %KEY_DATE% /v sDate 2^>nul`) DO set sDate=%%B

sDate値を delims= として使用し、iDateロケール日付の形式として使用しました。

    FOR /F "tokens=1-3 delims=%sDate%" %%A IN ("%temptime%") DO (
        IF "%iDate%"=="0" (
            SET fdd=%%B
            SET fmm=%%A
            SET fyyyy=%%C
        )
        IF "%iDate%"=="1" (
            SET fdd=%%A
            SET fmm=%%B
            SET fyyyy=%%C
        )
        IF "%iDate%"=="2" (
            SET fdd=%%C
            SET fmm=%%B
            SET fyyyy=%%A
        )
    )

    echo %fyyyy%/%fMM%/%fdd%

ff も参照できます。使い方はこちら

これが皆さんのお役に立てば幸いです。

于 2012-04-18T10:09:04.303 に答える