bat/cmd

dateコマンド スラッシュなしでバッチファイルで表示させる方法

ファイル名に日付付与するバッチ

こんばんは、ご存じの方も多いかと思いますが、Windowsのフォルダ名やファイル名には、/(スラッシュ)がついていると保存が出来ません。

今回はスラッシュなしで西暦年月日を表示するコマンドを紹介します。

dateコマンド スラッシュなし日付

Windowsフォルダの命名規則として/ (スラッシュ)は入力が出来ないようになっています。禁止文字列を入力すると下記のようにエラーメッセージが表示されます。

Windowsフォルダ名_禁止文字列
Windowsフォルダ名の禁止文字列(半角)
  • ¥ (エン)
  • / (スラッシュ)
  • : (コロン)
  • * (アスタリスク)
  • ? (クエスチョン)
  • ” (ダブルクウォーテーション)
  • < (左かっこ)
  • > (右かっこ)
  • | (パイプ)

バッチファイルやコマンドで西暦年月日をフォルダ名に付与したい場合は、スラッシュを抜いた形で保存しなければいけません。

※フォルダ名やファイル名は全角文字であれば保存することが出来ます。

下記のように、バッチファイルやコマンドプロンプトのフォルダ作成コマンドで mkdir %date% を打つと下記のように表示されます。

C:\>mkdir %date%
コマンドの構文が誤っています。

”コマンドの構文が誤っています。” と表示されます。

mkdir %date%YYYY/MM/DDフォルダを作成の命令の為、Windows禁止文字列のスラッシュを使っているので作成拒否されています。

下記のように、日付を表示するコマンドで echo %date% と打つと2020/09/02と/(スラッシュ)つきの西暦8桁が表示されます

C:\>echo %date%
2020/09/02

バッチファイルなどを利用しシステムのバックアップなどでフォルダ名の先頭に日付をつけたい時もあるかと思います。

普通に作成しようとするとエラーになるので、ひと工夫が必要です。

コマンド date / (スラッシュなし) 表示方法

西暦8桁日付 /(スラッシュなし)の表示方法が下記になります。%date%の文字列から年月日をそれぞれ抽出しています。

set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
echo %YYYY%%MM%%DD%
20200902

コマンド解説

バッチファイルやコマンドプロンプトでの文字の数え方は先頭は0(ゼロ)からスタートになります。

例: 2018/10/08の場合

set YYYY=%date:~0,4% は先頭0文字目から4文字を抽出し変数YYYYにセット

set MM=%date:~5,2% は先頭5文字目から2文字を抽出し変数MMにセット

set DD=%date:~8,2% は先頭8文字目から2文字を抽出し変数DDにセット

最後にセットしたYYYY(年)、MM(月)、DD(日)を結合させてecho %YYYY%%MM%%DD%20200902の表示になります。

スラッシュなし日付の抽出コマンドは、バッチファイルで使用するとファイル名に日付付与出来るので効果を発揮できます。

まとめ

  • フォルダ作成の禁止文字は \ * ” / <> | ? です。
  • mkdir %date% では保存できない
  • dateはスラッシュを抜いて抽出するコマンドがある
  • バッチファイル作成時にファイル名に日付付与が出来る

更にタスクスケジューラーを使用してバッチファイルを起動させれば簡易自動バックアップタスクの完成です。

それではー!

ABOUT ME
なお
フルスタックエンジニアを目指すサラリーマン。インフラ、WEBを中心に色んなIT関連情報に手を出したいと思います。