任意のディレクトリから指定したファイル(複数可)をカレントディレクトリにコピーできます。
使用方法
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に生成してもらいました。