CSVを使ったファイル名の一括リネームバッチ

バッチファイル


setlocal enabledelayedexpansion

REM CSVファイルのパス
set "CSV=C:\data\rename_list.csv"

for /f "usebackq skip=1 tokens=1,2 delims=," %%A in ("%CSV%") do (
    set "OLD=%%~A"
    set "NEW=%%~B"

    REM 前後の空白を削除
    for /f "tokens=* delims= " %%i in ("!OLD!") do set "OLD=%%i"
    for /f "tokens=* delims= " %%j in ("!NEW!") do set "NEW=%%j"

    if exist "Y:\inin\!OLD!" (
        echo Renaming "!OLD!" to "!NEW!"
        ren "Y:\inin\!OLD!" "!NEW!"
    ) else (
        echo ファイルが見つかりません: "!OLD!"
    )
)

echo 完了しました!
pause

パワーシェルを使ったバッチファイル

powershell -NoProfile -Command "Import-Csv -Path 'C:\data\rename_list.csv' -Header 'OldName','NewName' | ForEach-Object { $old = $_.OldName.Trim(); $new = $_.NewName.Trim(); $path = 'Y:\inin'; $oldPath = Join-Path $path $old; if (Test-Path $oldPath) { Rename-Item -Path $oldPath -NewName $new; Write-Host \"? Renamed '$old' → '$new'\" } else { Write-Host \"? Not found: '$old'\" } }"

bat

Posted by eightban