任意のフォルダ配下にあるzipファイルを解凍するバッチスクリプト

選択したフォルダ配下にあるZIPファイルをすべて解凍して、その中のテキストファイルを任意のフォルダないに出力するバッチスクリプトです。

@echo off
setlocal

REM バッチファイルが存在するディレクトリを取得
set "batch_dir=%~dp0"

REM ユーザーにフォルダを選択させる
set "source_folder="
set "destination_folder="

echo フォルダを選択してください。
powershell -command "Add-Type -AssemblyName System.Windows.Forms; $folder = New-Object System.Windows.Forms.FolderBrowserDialog; $folder.RootFolder = [System.Environment+SpecialFolder]::MyComputer; $folder.SelectedPath = '%batch_dir%'; $folder.ShowDialog() | Out-Null; $folder.SelectedPath" > temp.txt
set /p source_folder=<temp.txt
del temp.txt

REM 解凍先のフォルダ名を入力させる
set /p destination_folder="解凍先のフォルダ名を入力してください: "

REM 新しいフォルダを作成
mkdir "%destination_folder%"

REM 一時フォルダを作成
set "temp_folder=%batch_dir%temp_unzip"
mkdir "%temp_folder%"

REM 選択したフォルダ内のすべてのZIPファイルを一時フォルダに解凍
for %%f in ("%source_folder%\*.zip") do (
    echo 解凍中: %%f
    powershell -command "Expand-Archive -Path '%%f' -DestinationPath '%temp_folder%\%%~nf'"
)

REM 一時フォルダ内のサブフォルダを確認し、.txtファイルを解凍先フォルダに移動
for /r "%temp_folder%" %%d in (*.txt) do (
    echo 移動中: %%d
    move "%%d" "%destination_folder%"
)

REM 一時フォルダを削除
rd /s /q "%temp_folder%"

echo すべての.txtファイルを解凍先フォルダに移動しました。
pause

コメント