[Windows 7] pythonで特定の日付以降に修正されたファイルだけを表示する方法
これが必要になった経緯
職場のパソコン環境がよくある Windows + Windows ファイルサーバという組み合わせです。このファイルサーバが膨大なんですが、それなりに重要なファイルが保管されています。
で、最近(たとえば過去 7 日間の間に)更新されたファイルだけ一覧でほしい、という欲求が出てきました。いちいち、あのファイル更新されたかな?このファイル更新されたかな?とディレクトリーを移動しまくりながらチェックするのは時間の無駄だと思うわけです。
Java Script か PowerShell を使おうかとも思ったのですが、会社パソコンにはpython が既にインストールされていたのと、僕の好みから python で実現しようと思い立った。
python で作ったスクリプトの機能
- スクリプトはコマンドプロンプトから実行する
- スクリプト実行時に日付を与え、その日付よりも後に更新されたファイルのみを表示する
- 表示するファイルはエクセル、パワーポイント、ワード、PDF に絞る
python で作ったスクリプトの中身
# coding: UTF-8 import os import time import fnmatch import sys #----------------------------------------------------------- # Variables #----------------------------------------------------------- scriptname = 'show_files.py' basedrive = 'x:/' basedir = basedrive + 'target' argvs = sys.argv #----------------------------------------------------------- # Check argv #----------------------------------------------------------- if len(argvs) < 2: print('Usage: python ' + scriptname + ' YYYYMMDD') quit() yyyymmdd = argvs[1] #----------------------------------------------------------- # Functions #----------------------------------------------------------- def show_files(dir): for root, dirs, files in os.walk(dir): yield root for file in files: yield os.path.join(root, file) #----------------------------------------------------------- # Main #----------------------------------------------------------- for file in show_files(basedir): updtime = os.path.getmtime(file) tstamp = time.strftime("%Y%m%d", time.localtime(updtime)) if tstamp > yyyymmdd: if fnmatch.fnmatch(file, '*.xlsx'): print(file) elif fnmatch.fnmatch(file, '*.pptx'): print(file) elif fnmatch.fnmatch(file, '*.docx'): print(file) elif fnmatch.fnmatch(file, '*.pdf'): print(file)
今後、このファイルを別の用途にも流用していこうと思います。
このスクリプトの実行方法
コマンドプロンプトを起動して実行する。
c:¥Python34>python u:¥show_files.py 20161224
Windows のファイルサーバを検索するので処理終了まで時間がかかってしまうのが難点。。。