Windows コマンドラインで現在の日時を取得してファイル/フォルダ名に適した形式にする

2024-08-20

Windowsのコマンドライン上で現在の日時を取得し、ファイル名やフォルダ名に使える適切な形式に変換する方法について説明します。主にバッチファイルでの利用を想定しています。

方法

PowerShellを利用する

PowerShellは柔軟な日付時刻フォーマットを提供します。

@echo off
for /f "tokens=*" %%a in ('PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set datetime=%%a
echo %datetime%
  • Get-Date -Format yyyyMMdd_HHmmss: 年月日_時分秒の形式で現在の日時を取得します。
  • for /fループでPowerShellの出力を変数datetimeに代入します。

wmicコマンドを利用する

wmicコマンドは、Windows Management Instrumentation (WMI) を使用してシステム情報を取得できます。

@echo off
for /f "tokens=2 delims=:" %%a in ('wmic OS Get LocalDateTime /Format:Table') do set datetime=%%a
set datetime=%datetime:~0,8%_%datetime:~9,2%_%datetime:~11,2%_%datetime:~13,2%_%datetime:~15,2%
echo %datetime%
  • wmic OS Get LocalDateTime /Format:Table: ローカル日時をテーブル形式で取得します。
  • for /fループで日時部分のみを抽出します。
  • 文字列操作でYYYYMMDD_HHMMSS形式に変換します。

フォーマットの調整

取得した日時文字列は、必要に応じてさらに加工することができます。

  • set datetime=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2% で YYYY-MM-DD 形式に変換
  • set datetime=%datetime:~0,8% で YYYYMMDD の日付のみ抽出

注意点

  • 上記の方法ではタイムゾーンを考慮していません。必要に応じて調整してください。
  • ファイル名やフォルダ名に使用する場合、不正な文字が含まれないように注意してください。
  • バッチファイルの実行タイミングによって、生成されるファイル名やフォルダ名が重複する可能性があります。

備考

PowerShellの方が柔軟性が高く、一般的に推奨されます。しかし、古いバージョンのWindowsでは利用できない場合があります。

@echo off
for /f "tokens=*" %%a in ('PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set datetime=%%a
md "Backup_%datetime%"

上記のバッチファイルを実行すると、現在の年月日と時刻を含むフォルダが作成されます。




Windows コマンドラインでの日時取得とファイル名への利用

コード解説

コード例 1: PowerShell を利用した方法

@echo off
for /f "tokens=*" %%a in ('PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set datetime=%%a
echo %datetime%
  • @echo off: バッチファイル内のコマンドの表示をオフにします。
  • for /f "tokens=*" %%a in ('PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set datetime=%%a:
    • PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss": PowerShell を使って現在の日時を "yyyyMMdd_HHmmss" フォーマットで取得します。
    • for /f "tokens=*" %%a in ('...'): PowerShell の出力をループ処理し、結果を %%a 変数に代入します。
    • set datetime=%%a: %%a の値を datetime 変数に代入します。
  • echo %datetime%: datetime 変数の内容を出力して確認します。

コード例 2: wmic コマンドを利用した方法

@echo off
for /f "tokens=2 delims=:" %%a in ('wmic OS Get LocalDateTime /Format:Table') do set datetime=%%a
set datetime=%datetime:~0,8%_%datetime:~9,2%_%datetime:~11,2%_%datetime:~13,2%_%datetime:~15,2%
echo %datetime%
  • @echo off: 同上。
  • for /f "tokens=2 delims=:" %%a in ('wmic OS Get LocalDateTime /Format:Table') do set datetime=%%a:
    • for /f "tokens=2 delims=:" %%a in ('...'): 出力から 2 番目のトークン (日時部分) を抽出し、%%a 変数に代入します。
  • set datetime=%datetime:~0,8%_%datetime:~9,2%_%datetime:~11,2%_%datetime:~13,2%_%datetime:~15,2%:
    • datetime 変数の内容を操作して、"yyyyMMdd_HHmmss" フォーマットに変換します。
  • echo %datetime%: 同上。

取得した日時文字列は、必要に応じて以下のように加工できます。

  • YYYY-MM-DD 形式: set datetime=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2%
  • YYYYMMDD の日付のみ: set datetime=%datetime:~0,8%
  • タイムゾーンは考慮されていません。
  • ファイル名やフォルダ名の重複に注意してください。

活用例

@echo off
for /f "tokens=*" %%a in ('PowerShell -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set datetime=%%a
md "Backup_%datetime%"

上記のバッチファイルを実行すると、"Backup_yyyyMMdd_HHmmss" という名前のフォルダが作成されます。




Windows コマンドラインでの日時取得の代替方法

これまで PowerShell と wmic コマンドを使った方法を紹介しましたが、他にも日時を取得する方法があります。ここでは、いくつかの代替方法を紹介します。

代替方法

VBScript を利用する

VBScript は Windows Script Host で実行できるスクリプト言語です。

@echo off
for /f "tokens=*" %%a in ('cscript /nologo "script.vbs"') do set datetime=%%a
echo %datetime%

script.vbs ファイルの内容:

Dim objDate
Set objDate = CreateObject("Scripting.FileSystemObject")
Wscript.Echo Format(objDate.Now, "yyyyMMdd_HHmmss")

WScript.Shell オブジェクトを利用する

PowerShell の代わりに WScript.Shell オブジェクトを使うこともできます。

@echo off
for /f "tokens=*" %%a in ('cscript /nologo "script.vbs"') do set datetime=%%a
echo %datetime%
Dim objShell
Set objShell = CreateObject("WScript.Shell")
Wscript.Echo objShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\StandardTime")

ただし、この方法は正確な日時を取得できない可能性があります。

  • VBScript や WScript.Shell を利用する場合は、セキュリティ上の考慮が必要な場合があります。
  • 上記の例では、日時フォーマットを調整する必要があります。
  • wmic コマンドは、一部の環境では利用できない可能性があります。

PowerShell が一般的に推奨されますが、状況に応じて他の方法も検討できます。VBScript は柔軟性が高く、特定の環境で有用な場合があります。ただし、セキュリティやパフォーマンス面での考慮が必要となります。

注意: これらの方法は、主にバッチファイルでの利用を想定しています。他のプログラミング言語を使用する場合は、それぞれの言語固有の方法を利用してください。

例:

@echo off
for /f "tokens=*" %%a in ('cscript /nologo "script.vbs"') do set datetime=%%a
md "Data_%datetime%"

windows datetime batch-file



C#で相対時間を計算できるようになれば、あなたのプログラミングスキルが飛躍的に向上する!

DateTime 構造体は、日付と時刻を表す型です。この構造体には、相対時間を計算するためのいくつかのメソッドが用意されています。例えば、以下のコードは、現在時刻から2時間後の時刻を取得します。また、以下のコードは、2つの DateTime 構造体間の差分を取得します。...


C# で DateTime オブジェクトから ISO 8601 形式の文字列を取得する

ISO 8601 形式は、日付と時刻を表現するための国際標準です。C# の DateTime オブジェクトは、この形式の文字列を取得するための便利なメソッドを提供しています。最も直接的な方法は、DateTime オブジェクトの ToString() メソッドを使用し、適切な書式指定子を提供することです。ISO 8601 形式の書式指定子は "O" です。...


iPhoneアプリ開発のコード例 (Windows環境)

iPhoneアプリの開発は通常、macOSを搭載したMacコンピューターで行われます。しかし、Windowsマシンでも開発が可能になりました。以下は、主な方法です:Apple Developer Programに登録する必要があります。これは、iPhoneアプリの開発に必要な証明書やプロビジョニングプロファイルをダウンロードするために必要です。...


Windows で TCP/UDP ポートをリスニングしているプロセスを確認するコード例解説

Windows 上で特定の TCP/UDP ポートをリスニングしているプロセスを調べるには、コマンドプロンプトや PowerShell を使用します。主に netstat コマンドと tasklist コマンド(または PowerShell の Get-Process コマンド)を組み合わせます。...


WindowsのバッチファイルでN日以上経過したファイルを削除する

Windowsのバッチファイルを利用して、指定した日数以上経過したファイルを削除する方法について説明します。この手法は、ディスク容量の管理やデータの整理に役立ちます。基本的な手順フォルダの指定: 削除したいファイルを格納しているフォルダのパスを指定します。...



windows datetime batch file

バッチファイルへの引数渡しと、その例コード解説

バッチファイルは、Windows上で一連のコマンドを実行するスクリプトです。引数(arguments)は、バッチファイルの実行時に外部から渡すことができるデータで、バッチファイル内の処理を柔軟にすることができます。バッチファイルでは、%1, %2, %3, ... のようにパーセント記号と数字を使って引数を参照します。


WindowsのバッチファイルでN日以上経過したファイルを削除する

Windowsのバッチファイルを利用して、指定した日数以上経過したファイルを削除する方法について説明します。この手法は、ディスク容量の管理やデータの整理に役立ちます。基本的な手順フォルダの指定: 削除したいファイルを格納しているフォルダのパスを指定します。


Windows バッチファイルにおける複数行コマンド分割の代替方法

Windows バッチファイルでは、コマンドを複数の行に分割して記述することができます。これは、長いコマンドをより読みやすく管理するため、または特定の条件に基づいてコマンドを分割するために便利です。キャレット (^) を使用:行の末尾にキャレット (^) を追加します。次の行の最初の文字の前にスペースを挿入します。この方法を使用すると、コマンドが一つの長いコマンドとして実行されます。echo This is a long command that is split into multiple lines ^ using the caret symbol ^


バッチファイルでWindowsをシャットダウン、再起動、ログオフする方法

バッチファイルは、一連のコマンドをテキスト形式で保存したファイルです。Windowsでは、.batという拡張子を持ちます。このファイルを実行することで、コマンドプロンプト上で複数の操作を自動化できます。この記事では、バッチファイルを使ってWindowsをシャットダウン、再起動、ログオフする方法について説明します。


C#でDateTime型の誕生日から年齢を計算するコードの解説

日本語:C#でDateTime型の誕生日から年齢を計算するには、以下の手順に従います。誕生日を取得する: DateTime型の変数に誕生日の日付を設定します。現在の時刻を取得する: DateTime. Nowを使用して現在の時刻を取得します。