[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 のファイルサーバを検索するので処理終了まで時間がかかってしまうのが難点。。。

(Visited 212 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください