@echo off title %~nx0 ver | find "Version 6" >nul && set osver=vista if "%osver%"=="vista" ( if /i not "%cd%"=="%windir%\system32" GOTO UAC pushd %~dp0 ) REM check dd.exe if exist dd.exe set ddexe=ok if exist .\dd\dd.exe set ddexe=ok if "%ddexe%"=="" GOTO NODD set path=%cd%\dd;%cd%;%path% set temp_dir=%temp%\%random% mkdir %temp_dir% set "cddrive=%temp_dir%\cddrive.txt" echo: echo: echo ************************************************************** echo ************************************************************** echo ***** ***** echo * === CD(DVD) からISOイメージを作成しちゃいます。。。 === * echo ***** ***** echo * === ドライブにCD(DVD)をセットシテクダサイ === * echo ***** ***** echo ************************************************************** echo ************************************************************** echo: echo ちょっとレジストリを調べるので、最初は重いです... echo: echo 続行しますか? 中断は xボタン or Ctrl-C echo: echo *** 何かキーを押すと続行します *** pause >nul cls echo: echo: echo: echo ....... CDドライブのドライブ名を調べています ...... echo: del cddrive.txt 2>nul reg query HKLM\SYSTEM\MountedDevices | findstr 4300640052006F006D00 | findstr DosDevices >"%temp_dir%\temp.txt" for %%x in (D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do findstr \%%x: "%temp_dir%\temp.txt" >nul && echo %%x: - CD-ROM ドライブ>>"%cddrive%" REM ##################################### REM ### ASK REM ##################################### :ASK cls set drive= echo: echo ============================================================== echo == == echo *** 対象のドライブを指定シテクダサイ *** echo == == echo == ===== 例 : X: ===== == echo == == echo コロン ':' も必要です echo == == echo *** ファイルはこのディレクトリに保存されます *** echo == == echo * 中断するには qq を入れてEnter * echo ============================================================== echo * こんな状態らしいです... * echo: REM type "%cddrive%" for /f "usebackq delims=" %%x in ("%cddrive%") do ( echo * %%x ) echo: set /p drive= ドライブレター[ D:, E:, ..., Z: ]: echo: if "%drive%"=="" echo ドライブの指定が必要です! && GOTO WAIT if "%drive%"=="." echo ドライブの指定が必要です! && GOTO WAIT if /i "%drive%"=="qq" GOTO CANCEL echo %drive% | findstr : >nul if ERRORLEVEL 1 echo コロン ':' も必要です! && GOTO WAIT findstr /i /b %drive% "%cddrive%" >nul if not ERRORLEVEL 1 GOTO CHECK if ERRORLEVEL 1 echo ! CDドライブじゃないみたいです... ! :WAIT echo: echo *** 何かキーを押すと戻ります *** echo: pause >nul GOTO ASK :CHECK echo: if exist "%drive%"\*.* GOTO ISONAME echo ! ドライブが空のようです... ! GOTO WAIT REM ##################################### REM ### ISONAME REM ##################################### :ISONAME cls echo: echo ============================================================== echo *** 保存するファイル名を入力してください *** echo: echo *** 未入力だと " cdimage.iso " となります *** echo *** 拡張子 .iso が付加されます *** echo *** (この後、サイズを確認します...) *** echo: echo * 中断するには qq を入れてEnter * echo: set /p isoname= ファイル名: echo: if /i "%isoname%"=="qq" GOTO CANCEL if "%isoname%"=="" set isoname=cdimage if not exist %isoname%.iso GOTO INFO echo: echo -------------------------------------------------------------- echo %isoname%.iso が存在します。上書きしてもいいのでせうか? echo -------------------------------------------------------------- set /p select= [y,N]: echo: if /i "%select%"=="y" GOTO INFO echo: GOTO ISONAME REM ##################################### REM ### INFO REM ##################################### :INFO cls echo: echo: echo *** 対象ドライブ(CD or DVD)の容量を計算しています *** echo *** 少し時間がかかります *** echo: pushd %drive% REM for /f "usebackq delims=." %%I in (`du -sm`) do set cdsize=%%I for /f "usebackq tokens=3,*" %%I in (`dir /a/s ^| findstr 個のファイル`) do set "cdsize=%%I %%J" popd :INFO_2 for /f "tokens=3,4" %%I in ('dir ^| findstr の空き領域') do set "aki=%%I %%J" for %%I in (%drive%) do set drive=%%~dI echo: echo ============================================================== echo: echo * 対象ドライブ ----- %drive% echo * CD容量 ----- %cdsize% echo * 現HDドライブの空き領域 ----- %aki% echo * 作成するisoファイル名 ----- %isoname%.iso echo: echo ****** よろしいですか? ****** echo ============================================================== echo: echo *** 何かキーを押すと作成開始します *** echo *** 中断は xボタン or Ctrl-C *** echo: pause >nul REM ##################################### REM ### MAKE REM ##################################### :MAKE set path=.\dd;%path% echo: echo ......... dd コマンドでイメージを保存しています ............ echo: dd if=\\.\%drive% of=%isoname%.iso bs=1M --progress echo: echo: if "%errorlevel%"=="0" GOTO DONE if not "%errorlevel%"=="0" GOTO ERROR REM ##################################### REM ### ERROR REM ##################################### :NODD echo: echo ============================================================== echo dd.exe がありませんです... echo ============================================================== GOTO NOFILES :NOFILES echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo ! ファイルが足りないのて中断しますです... ! echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END :ERROR echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo ** ! エラー出ますた ! ** echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GOTO END REM ##################################### REM ### UAC REM ##################################### :UAC echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !「管理者として実行」してくださいマセ ! echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END REM ##################################### REM ### DONE REM ##################################### :DONE echo: echo %isoname%.iso を作成しました... echo: echo 正常に終了しますた... echo: GOTO END :CANCEL echo: echo キャンセルしますた... GOTO END :END echo: echo *** 何かキーを押すと閉じます *** echo: pause >nul if exist "%temp_dir%" rd /s /q "%temp_dir%"