複数のファイルが有り、先頭が一定の種類でまとまっている。例えば、momo-123.jpg momo-assd.jpg dda-qqqwqw.jpg dda-ttttrerer.jpgなど。これらを、まずフォルダ分けして移動する。momoフォルダ ddaフォルダなど。 次に圧縮して、1つずつの圧縮ファイルにしたい momo.zip dda.zip のように。このようなバッチを作成できないか
できます!Windows環境で使える「バッチファイル(.bat)」を作成すれば、以下のような処理が可能です:
---
### ✅ やりたいこと(まとめ)
1. 複数のファイル(例:`momo-123.jpg`, `dda-abc.jpg`)がある。
2. 接頭辞(例:`momo`, `dda`)ごとにフォルダを作り、ファイルを移動。
3. 各フォルダを個別に ZIP 圧縮(例:`momo.zip`, `dda.zip`)。
---
### 🛠 バッチファイルのコード(`sort_and_zip.bat`)
```bat
@echo off
setlocal enabledelayedexpansion
REM 作業ディレクトリ(スクリプトのある場所に設定)
cd /d "%~dp0"
REM 拡張子を指定(jpg以外も対応可能)
set EXT=jpg
REM ファイルをループ処理
for %%f in (*.%EXT%) do (
REM 接頭辞をファイル名の先頭からハイフンまで抽出(例:momo)
for /f "tokens=1 delims=-" %%a in ("%%~nxf") do (
set PREFIX=%%a
REM フォルダがなければ作成
if not exist "!PREFIX!" (
mkdir "!PREFIX!"
)
REM 該当フォルダにファイル移動
move "%%f" "!PREFIX!\"
)
)
REM フォルダをZIP圧縮(PowerShell使用)
for /d %%d in (*) do (
REM 拡張子を除いたZIPファイル名を作成
powershell -command "Compress-Archive -Path '%%d\*' -DestinationPath '%%d.zip'"
)
echo 完了しました!
pause
```
---
### 🔧 使い方
1. 上記コードをメモ帳などにコピペ。
2. `sort_and_zip.bat` として保存。
3. 対象の画像ファイル(例:`momo-1.jpg`など)があるフォルダにこの `.bat` を配置。
4. ダブルクリックで実行。
---
### 📝 注意点
- Windows 標準の `Compress-Archive` は PowerShell で使えるので、特別なソフト不要。
- 拡張子が `.jpg` 以外(例:`.png`, `.txt`など)の場合は、`set EXT=jpg` を変更。
---
もしファイル名のルールがもう少し複雑だったり、他のOS(Mac / Linux)用スクリプトも必要なら、その辺りも対応できるよ!