おやつはさっき食べたでしょ

書き留めないと忘れちゃう。

ファイルのタイムスタンプ(更新日時)をバッチで一括変更する ~Windows10~

これはなに?

ファイルのタイムスタンプを変更するコマンドを調べたので、忘れないうちにバッチにしたん。
作成日時・更新日時・アクセス日時、のどれでも全部でも好きな日時・時刻に変更できます。 

 使い方

  1. Codeを全部テキストファイルにコピペ保存し、"タイムスタンプ変更.bat" とか適当な名前に変更してバッチファイルを作成
  2. タイムスタンプを変更したいファイルを(まとめてでもOK)バッチにドロップ
  3. 変更したい項目を選び、変更後の日時・時刻を入力
  4. SendTo: に入れておけば、[右クリック→送る] からでもタイムスタンプ変更できて幸せ

Windows10で動作確認。その他のWindowsでもPowerShellが動けば動きます。たぶん・・

 

実行イメージ

f:id:usagi311:20180908104310j:plain

 

Code

@echo off
echo;
echo 作成日時,更新日時,アクセス日時のうち、変更するものを選んでください。
echo (eg. 100=作成日時、001=アクセス日時、未入力=111=すべて)
set /p ITM=変更対象入力 : 
echo;
echo フォーマットに従い日時を入力してください。
echo  (eg. 2001/05/03 19:27:56  (←未入力はこの日時に設定)) :
set /p DT=日時入力 : 
if "%ITM%1"=="1" set ITM=111
if "%DT%1"=="1" set DT=2001/05/03 19:27:56
echo;
echo %DT%
echo;

:SYORI
if "%ITM:~0,1%"=="1" powershell -ExecutionPolicy RemoteSigned Set-ItemProperty '%1' -name CreationTime -value '%DT%'
if "%ITM:~1,1%"=="1" powershell -ExecutionPolicy RemoteSigned Set-ItemProperty '%1' -name LastWriteTime -value '%DT%'
if "%ITM:~2,1%"=="1" powershell -ExecutionPolicy RemoteSigned Set-ItemProperty '%1' -name LastAccessTime -value '%DT%'

:GONEXT
shift
if /i "1%~1" NEQ "1" goto SYORI

:TERMINATION
echo 処理を終了しました。
  ping localhost -n 4 >nul:
endlocal