読者です 読者をやめる 読者になる 読者になる

ファイルのタイムスタンプを一括変更するAutomatorサービス

f:id:junosakura:20170510003947p:plain

Automator×AppleScriptでファイルのタイムスタンプを一括変更するスクリプトを書きました。どうとでもしてくれライセンス(WTFPL)です。

アテンション

取り消し:不可。バックアップ推奨。

初期値:現在日時。ファイルのタイムスタンプではない。

変更対象:作成日と変更日。個別変更はできない。

処理速度:遅いかも。3600ファイルで1分20秒くらい。

不具合:たぶんある。利用は自己責任で。

サービスの設定

次の選択項目を受け取る:ファイルまたはフォルダ

検索対象:Finder.app

アクション:AppleScriptを実行

on run {input, parameters}

  set _year    to year    of (current date)
  set _month   to month   of (current date) as integer
  set _day     to day     of (current date)
  set _hours   to hours   of (current date)
  set _minutes to minutes of (current date)
  set _seconds to seconds of (current date)

  if _year    < 10 then set _year    to "0" & _year
  if _month   < 10 then set _month   to "0" & _month
  if _day     < 10 then set _day     to "0" & _day
  if _hours   < 10 then set _hours   to "0" & _hours
  if _minutes < 10 then set _minutes to "0" & _minutes
  if _seconds < 10 then set _seconds to "0" & _seconds

  set _dialog to "MM/DD/YYYY hh:mm:ss"
  set _title  to "タイムスタンプの変更"
  set _date   to _month & "/" & _day & "/" & _year & " " & _hours & ":" & _minutes & ":" & _seconds

  display dialog _dialog with title _title with icon note default answer _date

  set _answer to text returned of result
  set _script to "/usr/bin/setfile -d " & quoted form of _answer & " -m " & quoted form of _answer & " "

  repeat with i in input
    do shell script _script & quoted form of POSIX path of i
  end repeat

end run

備考

  • set {year:y, month:m, ...} すると month が文字列になる
  • repeat ... if i < 10 then すると minutes が文字列になる

ので、冗長な書き方をしています。

気になったら適当に改良してやってください。