ファイルをコピーしたりフォルダのシンボリックリンクを作成したりするスクリプト

「フォルダの場合はシンボリックリンクを作成し、ファイルの場合はコピーする」という作業が必要になったので、Python でスクリプトを書いてみました。自分用にメモ。

# -*- coding: utf-8 -*-

import os
import glob
import shutil

SRC_DIRS = [
    "C:/Projects/Sample/x86/Foo/",
    "C:/Projects/Sample/x86/Bar/",
]
DEST_DIRS = [
    "C:/Projects/Sample/x64/Foo/",
    "C:/Projects/Sample/x64/Bar/",
]

# フォルダをコピー
def copy_dir(src, dest):
    # フォルダ作成
    if not os.path.exists(dest):
        print("%s がないので作成します。" % dest)
        # 再帰的に作成
        os.makedirs(dest)

    list = glob.glob(src + "*")
    for file in list:
        name = os.path.basename(file)
        if name.upper() in ("BIN", "BIND"): # 大文字にして比較
            # 特定のフォルダは無視
            pass
        elif name == "SQLite":
            # 特定のフォルダは再帰的にコピー
            shutil.copytree(file, dest + name)
        elif os.path.isfile(file):
            # ファイルをコピー
            shutil.copyfile(file, dest + name)
        else:
            # シェルコマンド実行
            os.system('mklink /D "%s" "%s"' % (
                dest + name,
                file,
            ))

for index, src in enumerate(SRC_DIRS):
  dest = DEST_DIRS[index]
  copy_dir(src, dest)