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の場合
  1. set YYYY=%date:~0,4% は先頭0文字目から4文字を抽出し変数YYYYにセット
  2. set MM=%date:~5,2% は先頭5文字目から2文字を抽出し変数MMにセット
  3. set DD=%date:~8,2% は先頭8文字目から2文字を抽出し変数DDにセット
  4. 最後にセットしたYYYY(年)、MM(月)、DD(日)を結合させてecho %YYYY%%MM%%DD%20200902の表示になります。

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

まとめ dateコマンド スラッシュなし表示させる方法

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

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

良ければ過去記事も見てみてください↓

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

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA