1. ホーム
  2. windows

[解決済み] Windowsのコマンドラインで、現在の日付/時刻をファイル/フォルダー名で使用するために適切な形式で取得するにはどうすればよいですか?

2022-03-16 11:47:04

質問

更新: 2016年になった今、私は、本当に説得力のある後方互換性の理由がない限り、PowerShellを使用します。 date . 参照:@npocmaka さんの https://stackoverflow.com/a/19799236/8479


Windowsのコマンドラインで、現在の日時をファイル名に入れることができる形式で取得するには、どのようなステートメントを使用できますか?

私は、例えば、現在の日付と時刻を名前の一部として、ディレクトリをアーカイブにzipアップする.batファイルを持ちたいのです。 Code_2008-10-14_2257.zip . マシンの地域設定に関係なく、これを簡単に行う方法はありますか?

日付の書式は特に気にせず、yyyy-mm-ddが理想ですが、簡単なものなら何でもいいです。

今のところ、私のマシンでは次のようになりました。 Tue_10_14_2008_230050_91 :

rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%

rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code

これでもいいのですが、ちょっと不便な感じがします。理想は、もっと簡潔で、先に述べたような形式をとることです。

Windows Server 2003とWindows XP Professionalを使用しています。このために追加のユーティリティをインストールしたくありません(素敵な日付フォーマットを行うものがあることは承知しています)。

どのように解決するのですか?

参照 Windowsバッチファイル(.bat)でMMDDYYYY形式での現在日付の取得 :

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime%

24時間/ミリタリー形式の時刻がお好みなら、2行目のFORを次のように置き換えることができます。

For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)

C:> .Ⅻdate.bat。
2008-10-14_0642

もし、地域の日/月順序に関係なく日付が欲しい場合は、ISO順序なので、ソースとして "WMIC os GET LocalDateTime" を使用することができます。

@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%
echo Local date is [%ldt%]

C:>test.cmd
ローカル日付は[2012-06-19 10:23:47.048]です。