現在の日付 2013 年 6 月 6 日が MM/DD/YYYY と DD/MM/YYYY のどちらの形式であるかを調べる必要があります。したがって、両方とも「6」です。
私がやろうとしていたのは、現在の日付を取り、それに 3 日を追加することでした。そこから、MM フィールドが変更されないため、どれが MM フィールドであるかがわかります。日付+3日を一括で印刷する方法がわかりません。それは可能ですか?誰にもアイデアはありますか?私は数時間それに取り組んできました。GNU date コマンドを使用しようとしましたが、出力を指定する必要があるため、役に立ちません.. GRR!
これはWINDOWS用です。私が見ているファイルは変更できないので、日付が 2013 年 9 月 9 日の場合、フィールドを決定するために作業する必要があるのはそれだけです。
編集:私は次のコードを使用することになりました:それは少しやり過ぎですが、基本的にどのように行うかを見ることができます。値を設定する理由は、特定の日付に基づいて日付を提供するのが得意な Gnu date.exe コマンドと組み合わせて使用しているためです。したがって、スクリプトの別の場所で次のように使用します: date.exe --date "Now -90 days" %DATEFORMAT%. 別の投稿で提案されている date /T オプションを破棄する必要がありました。実際には、すべての状況で正しいデータが表示されるわけではないためです。
for /F "skip=1 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate ^< NUL') do (
echo.%%a|findstr /C:"/" >nul 2>&1 && set DELIM=/
echo.%%a|findstr /C:"-" >nul 2>&1 && set DELIM=-
echo.%%a|findstr /C:"." >nul 2>&1 && set DELIM=.
for /F "tokens=1-3 delims=-/." %%b in ("%%a") do (
set format=%%b%%c%%d
)
)
if %DELIM%==/ (
:: US English options
if %format%==Mdyyyy set DATEFORMAT=+%%-m/%%-d/%%Y
if %format%==Mdyy set DATEFORMAT=+%%-m/%%-d/%%y
if %format%==MMddyy set DATEFORMAT=+%%m/%%d/%%y
if %format%==MMddyyyy set DATEFORMAT=+%%m/%%d/%%Y
if %format%==yyMMdd set DATEFORMAT=+%%y/%%m/%%d
:: UK English options
if %format%==ddMMyyyy set DATEFORMAT=+%%d/%%m/%%Y
if %format%==ddMMyy set DATEFORMAT=+%%d/%%m/%%y
if %format%==dMyy set DATEFORMAT=+%%-d/%%-m/%%y
) else if %DELIM%==- (
if %format%==yyyyMMdd set DATEFORMAT=+%%Y-%%m-%%d
if %format%==ddMMMyy set DATEFORMAT=+%%d/%%m/%%y
if %format%==dMyy set DATEFORMAT=+%%-d-%%-m-%%y
) else if %DELIM%==. (
if %format%==dMyy set DATEFORMAT=+%%-d.%%-m.%%y
) else (
echo ERROR: System was unable to identify dateformat.
ping -n 10 -w 1 127.0.0.1 >NUL
)