Python で特定フォルダのファイルをまとめてコピー

任意のディレクトリから指定したファイル(複数可)をカレントディレクトリにコピーできます。

使用方法

1.コードを実行するとファイル名を聞かれるので、コマンドラインに拡張子を含むファイル名を入力します。複数のファイルを指定する場合はカンマ(,)区切りでファイル名を指定します。

2.次にコピー元のフォルダのパスを聞かれるので、コピー元のフォルダのパス入力します。何も入力せずにエンターキーを押すとコード内に直書きされたデフォルトのフォルダパスが指定されます。なので、使用する前にコード内のデフォルトのフォルダパスを書き換えておいてください。

import os
import shutil

def copy_files(file_names, source_dir):
    """
    Copy files from source_dir to the current directory based on a list of file names.

    Parameters:
        file_names (str): Comma-separated string of file names (e.g., 'file1.txt,file2.jpg').
        source_dir (str): Path to the directory where the files are located.
    """
    # Split the input string into a list of file names
    file_list = file_names.split(',')

    for file_name in file_list:
        # Strip whitespace from file names
        file_name = file_name.strip()
        
        # Construct full path to the source file
        source_file = os.path.join(source_dir, file_name)
        
        # Check if the source file exists
        if os.path.exists(source_file):
            try:
                # Copy the file to the current directory
                shutil.copy(source_file, os.getcwd())
                print(f"Copied: {file_name}")
            except Exception as e:
                print(f"Error copying {file_name}: {e}")
        else:
            print(f"File not found: {file_name}")

# Example usage
if __name__ == "__main__":
    # User inputs the file names
    user_file_names = input("Enter the file names (comma-separated): ")
    
    # Prompt user for source directory path
    user_source_dir = input("Enter the source directory path (press Enter to use default): ").strip()

    # Default directory
    default_source_dir = r"C:\Users\hoge\Desktop" # ご自分のフォルダパスに書き換えて下さい。

    # Use the default directory if the user input is empty
    if not user_source_dir:
        user_source_dir = default_source_dir
        print(f"No path entered. Using default source directory: {default_source_dir}")

    # Call the copy function
    copy_files(user_file_names, user_source_dir)

下記のようなバッチファイルを作成すればダブルクリックで簡単に実行可能です。

@echo off

:: バッチファイルがあるディレクトリを取得
SET SCRIPT_DIR=%~dp0

:: Pythonスクリプトのパス(下記はカレントディレクトリのscriptフォルダ内のスクリプトを指定)
SET SCRIPT_PATH=%SCRIPT_DIR%script\copy_files.py

:: Pythonスクリプトを実行
py "%SCRIPT_PATH%"

PAUSE

なお、今回のコードはChatGPTに生成してもらいました。