⚙️

現在日付時刻をつけて保存するバッチ

2020/10/14に公開

現在日付時刻をつけてファイルを保存するバッチ
日付時刻をつけたいファイルをバッチにドラッグ&ドロップすると、元ファイルと同階層に日付時刻付きのファイルができます。

backup.bat
@echo off

rem "filecopy batch"
set d=%date%
set yyyy=%d:~-10,4%
set mm=%d:~-5,2%
set dd=%d:~-2,2%

set t=%time: =0%
set hh=%t:~0,2%
set mn=%t:~3,2%
set ss=%t:~6,2%

set ADDSTRING=%yyyy%%mm%%dd%_%hh%%mn%%ss%

copy %1 "%~d1%~p1%~n1_%ADDSTRING%%~x1"

追記

サーバーで動かすと「アクセス拒否」になったので最後のcopyを以下のように直しました。

  • NG
copy %1 %~n1_%ADDSTRING%%~x1
  • OK
copy %1 %~d1%~p1%~n1_%ADDSTRING%%~x1

追記2

フォルダ名に半角スペースが含まれていると構文エラーになるので引用符を付けました。
可能な限り、フォルダ名をつけるときに半角スペースを入れないようにするのが望ましいです。
pauseすると分かりますが、copyの直後の%1は引用符がついているので、二つ目だけ引用符がついています。

追記3

複数のファイルを一括で処理できるようにするには、copy部分を以下のようにfor文に変更します。

echo ----------------------------------------
for %%a in (%*) do (
 echo %%a
 copy %%a "%%~da%%~pa%%~na_%ADDSTRING%%%~xa"
)
echo ----------------------------------------

Discussion