ファイル拡張子を一括変更する方法、一つのスクリプトで解決
- 730単語
- 4分
- 18 Jul, 2024
場合によっては、すべての .txt
ファイルを .md
に変更するなど、ファイルの拡張子を一括で変更する必要があります。この記事では、バッチファイル(.bat)とシェルスクリプトを使用してこの目標を達成する方法について、詳細な手順とユーザーインタラクションのプロンプトを含めて紹介します。
バッチファイルの実装
バッチスクリプト(.bat)を作成し、ユーザーをステップごとに案内してファイル拡張子を一括変更するタスクを実行します。
1. バッチファイルの作成
rename_extension.bat
という名前のファイルを作成し、次の内容をコピーします:
1@echo off2setlocal enabledelayedexpansion3
4rem Step 1: Prompt user for the directory5set "dir="6set /p dir="Please enter the directory you want to modify: "7
8rem Step 2: Ask if user wants to include subdirectories9set "include_subdirs="10set /p include_subdirs="Do you want to include all subdirectories? (y/n): "11
12rem Step 3: Prompt user for the original and new file extensions13set "orig_ext="14set /p orig_ext="Enter the original file extension (without dot): "15set "new_ext="16set /p new_ext="Enter the new file extension (without dot): "17
18rem Step 4: Perform the renaming operation19if /i "%include_subdirs%"=="y" (20 rem Include subdirectories21 for /r "%dir%" %%f in (*.%orig_ext%) do (22 set "filepath=%%f"23 ren "%%f" "%%~nf.%new_ext%"24 )25) else (26 rem Do not include subdirectories27 for %%f in ("%dir%\*.%orig_ext%") do (28 set "filepath=%%f"29 ren "%%f" "%%~nf.%new_ext%"30 )31)32
33echo All matching files have been renamed.34pause
2. バッチファイルの実行
rename_extension.bat
ファイルをダブルクリックし、プロンプトに従って情報を入力することで、指定したディレクトリ内のファイル拡張子を一括で変更できます。
シェルスクリプトの実装
シェルスクリプト(.sh)を作成し、ユーザーをステップごとに案内してファイル拡張子を一括変更するタスクを実行します。
1. シェルスクリプトの作成
rename_extension.sh
という名前のファイルを作成し、次の内容をコピーします:
1#!/bin/bash2
3# Step 1: Prompt user for the directory4read -p "Please enter the directory you want to modify: " dir5
6# Step 2: Ask if user wants to include subdirectories7read -p "Do you want to include all subdirectories? (y/n): " include_subdirs8
9# Step 3: Prompt user for the original and new file extensions10read -p "Enter the original file extension (without dot): " orig_ext11read -p "Enter the new file extension (without dot): " new_ext12
13# Step 4: Perform the renaming operation14if [ "$include_subdirs" = "y" ] || [ "$include_subdirs" = "Y" ]; then15 # Include subdirectories16 find "$dir" -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;17else18 # Do not include subdirectories19 find "$dir" -maxdepth 1 -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;20fi21
22echo "All matching files have been renamed."
2. スクリプトに実行権限を付与
ターミナルで次のコマンドを実行し、スクリプトに実行権限を付与します:
1chmod +x rename_extension.sh
3. シェルスクリプトの実行
ターミナルで次のコマンドを実行し、プロンプトに従って情報を入力することで、指定したディレクトリ内のファイル拡張子を一括で変更できます:
1./rename_extension.sh
まとめ
この記事では、バッチファイル(.bat)とシェルスクリプトを使用してファイル拡張子を一括変更する方法について、詳細な手順とユーザーインタラクションのプロンプトを含めて紹介しました。これらのスクリプトを使用することで、ファイル拡張子を簡単に一括で変更でき、作業効率を向上させることができます。