【bat】ファイルの更新日時を変更する

どうも、提出期限を厳守する 0 -Ray- です!

今回はファイルの更新日時を任意に変更するbatを自作したので紹介します!

今回のbatでできること特定ファイルの更新日時を変更する

一番最後にダウンロードできるリンクを用意するのでご自由にお使いください!

え、どんな時に使用するかって?
……
それでは早速いきましょう!

スポンサーリンク

コード

@echo off

set target=\target\*
set targetfolder=%CD%%target%

echo "※ファイルのバックアップを取っておくことを推奨します。"
echo "------------------------------------------------"

for %%f in (%targetfolder%) do (
    set targetfile=%%~f
    )

echo targetfile : %targetfile%
echo "------------------------------------------------"
set /p cdate="日付を入力してください。(yyyy/mm/dd) : "
echo "------------------------------------------------"
set /p ctime="時間を入力してください。(hh:mm:ss) : "	
echo "------------------------------------------------"	
set cinfo="%cdate% %ctime%"

echo .
SET /P selected="上記の内容でよろしいですか?(y=yes / n=no)?"

if /i {%selected%}=={y} (goto :yes)
if /i {%selected%}=={yes} (goto :yes)

if /i {%selected%}=={n} (goto :no)
if /i {%selected%}=={no} (goto :no)

:no

echo キャンセルしました。

goto exitlabel

:yes

set psCommand="Set-ItemProperty %targetfile% -name LastWriteTime -value '%cinfo%'"

powershell -NoProfile -ExecutionPolicy Unrestricted %psCommand%

if %errorlevel% == 0 (
	echo 正常終了しました。


) else (
	echo 処理できませんでした。
	echo 戻り値:%errorlevel%
	echo 入力した値などを見直してください。

)

:exitlabel
pause

コード解説

set target=\target\*
set targetfolder=%CD%%target%

Downloadしていただけるとわかりやすいですが、
今回のbatは、batファイルと同じ階層にある「target」フォルダ内のファイルの更新日時を変更するものとなっています。

echo "※ファイルのバックアップを取っておくことを推奨します。"
echo "------------------------------------------------"

for %%f in (%targetfolder%) do (
    set targetfile=%%~f
    )

echo targetfile : %targetfile%
echo "------------------------------------------------"
set /p cdate="日付を入力してください。(yyyy/mm/dd) : "
echo "------------------------------------------------"
set /p ctime="時間を入力してください。(hh:mm:ss) : "	
echo "------------------------------------------------"	
set cinfo="%cdate% %ctime%"

このあたりでファイルの情報を取得しています。
set /p 変数 =”terminalに表示する文字”で入力した値を変数に格納できます。
※(yyyy/mm/dd) (hh:mm:ss) のフォーマットで入力しないとエラーになります。

SET /P selected="上記の内容でよろしいですか?(y=yes / n=no)?"

if /i {%selected%}=={y} (goto :yes)
if /i {%selected%}=={yes} (goto :yes)

if /i {%selected%}=={n} (goto :no)
if /i {%selected%}=={no} (goto :no)

yes,no に合わせて、動作を変えれるようにラベルへ飛ばします。

:yes

set psCommand="Set-ItemProperty %targetfile% -name LastWriteTime -value '%cinfo%'"

powershell -NoProfile -ExecutionPolicy Unrestricted %psCommand%

if %errorlevel% == 0 (
	echo 正常終了しました。


) else (
	echo 処理できませんでした。
	echo 戻り値:%errorlevel%
	echo 入力した値などを見直してください。

)

noはキャンセルするだけの処理なので、ここではyesを解説します。
Powershellを起動して、更新日時を変更しています。

Download

下が実際に使用しているbatです!ご自由にどうぞ!

最後までご覧いただきありがとうございます!
それでは良いエンジニアライフを!!

コメント

タイトルとURLをコピーしました