@echo off title %~nx0 REM ## OS check ver | find "Version 6" >nul && set osver=vista if "%osver%"=="vista" ( if /i not "%cd%"=="%windir%\system32" GOTO UAC pushd %~dp0 ) REM check vfd.exe if not exist .\vfd\vfd.exe GOTO NOTHING1 REM ##################################### REM ### START REM ##################################### echo: echo ************************************************************** echo * * echo * === FDイメージをファイルに展開しますです === * echo * * echo * **** vfd,exe が必要です **** * echo * * echo * ファイルのあるとこのサブディレクトリへ展開致しマス * echo * * echo ************************************************************** echo: echo 続行しますか? 中断は xボタン or Ctrl-C echo: echo *** 何かキーを押すと続行します *** pause >nul set path=.\vfd;%path% :ASK set filename= cls echo: echo ============================================================== echo: echo *** 展開するファイル名を指定シテクダサイ *** echo: echo *** 中断するには qq を入れてEnter *** echo: echo ============================================================== echo: set /p filename= ファイル名: echo: for /f "usebackq delims=" %%I in ('%filename%') do set filename=%%~I if /i "%filename%"=="qq" GOTO CANCEL if "%filename%"=="" echo ファイル名を指定シテクダサイ !! && GOTO WAIT for /f "delims=" %%I in ("%filename%") do set filename=%%~fI if not exist "%filename%" echo * %filename% がありません!! && GOTO WAIT for %%x in ("%filename%") do set file_test=%%~ax if "%file_test:~0,1%"=="d" echo * %filename% はディレクトリです!! && GOTO WAIT echo: for %%I in ("%filename%") do set makedir=%%~nI for %%I in ("%filename%") do set dirpath=%%~dpI GOTO NAME :WAIT echo: echo *** 何かキーを押すと戻ります *** echo: pause >nul GOTO ASK :NAME echo: echo 対象ファイルは echo %filename% echo よろしいですか? echo: echo *** 何かキーを押すと続行します *** echo: pause >nul :DIREC if not exist "%dirpath%%makedir%" GOTO NAME2 cls echo: echo ============================================================== echo: echo *** %makedir% が既に存在します echo: echo *** 新規作成するディレクトリ名(名前だけ)を指定シテクダサイ echo: echo *** 中断するには qq を入れてEnter *** echo: echo ============================================================== echo: set /p makedir= ディレクトリ名: echo: if /i "%makedir%"=="qq" GOTO CANCEL echo: if exist "%dirpath%%makedir%\" echo ディレクトリ %makedir% は既にあります!! && GOTO WAIT2 echo: GOTO NAME2 :WAIT2 echo: echo *** 何かキーを押すと続行します *** echo: pause >nul GOTO DIREC :NAME2 echo: echo 展開するディレクトリは echo %dirpath%%makedir%\ echo よろしいですか? echo: echo *** 何かキーを押すと続行します *** echo: pause >nul GOTO VFD :VFD REM ### Image mount cls echo: echo: echo: echo ..... イメージを仮想ドライブにマウントします.... echo: for %%x in (V,W,X,Y,Z) do reg query HKLM\SYSTEM\MountedDevices | findstr \\%%x: >nul || echo %%x>>akidrive.txt for /f %%x in (akidrive.txt) do if not exist %%x:\ set vfdrive1=%%x del akidrive.txt 2>nul if "%vfdrive1%"=="" GOTO NODRIVE REM if vfdrive1 cannot mount ... REM set vfdrive1=R VFD.EXE STOP /FORCE 2>nul VFD.EXE START if not "%errorlevel%"=="0" GOTO ERROR1 echo: VFD.EXE ULINK * VFD.EXE link 0 %vfdrive1% VFD.EXE OPEN "%filename%" /RAM /W if not "%errorlevel%"=="0" GOTO ERROR2 echo: REM ### file copy echo: echo ..... 仮想ドライブからファイルをコピーします.... echo: mkdir "%dirpath%%makedir%" xcopy %vfdrive1%:\*.* "%dirpath%\%makedir%\" /s /e /h /r /y if not "%errorlevel%"=="0" GOTO ERROR3 echo: echo: echo ============================================================== echo ファイルのコピーは正常に終了しました echo ============================================================== echo: echo *** 何かキーを押すと終了処理します *** echo: pause >nul echo: VFD.EXE CLOSE %vfdrive1%: /FORCE VFD.EXE STOP /FORCE VFD.EXE REMOVE /FORCE GOTO DONE REM ##################################### REM ### ERROR REM ##################################### :NOTHING1 echo: echo ============================================================== echo vfd.exe がありませんです... echo ============================================================== GOTO END :NODRIVE echo: echo ============================================================== echo !!! V -Z に空きドライブ文字がありません !!! echo ============================================================== echo: VFD.EXE STOP /FORCE VFD.EXE REMOVE /FORCE GOTO END :ERROR1 echo: echo ============================================================== echo !!! Virtual Floppy Drive を開始できない様です !!! echo ============================================================== echo: VFD.EXE STOP /FORCE VFD.EXE REMOVE /FORCE GOTO END :ERROR2 echo: echo ============================================================== echo !!! ドライブ0 でFDイメージのマウントに失敗した様です !!! echo ============================================================== echo: VFD.EXE CLOSE %vfdrive1%: /FORCE VFD.EXE STOP /FORCE VFD.EXE REMOVE /FORCE GOTO END :ERROR3 echo: echo ============================================================== echo !!! コピーに失敗しましたです !!! echo ============================================================== echo: VFD.EXE CLOSE %vfdrive1%: /FORCE VFD.EXE STOP VFD.EXE REMOVE echo: echo ============================================================== echo !!! 一時ディレクトリ %dirpath%%makedir% を削除しますか? !!! echo !!! Enter で削除 ( n で削除しない) !!! echo ============================================================== echo: set /p select= Y , n : echo: if /i "%select%"=="n" GOTO END echo: echo: rmdir /s /q %dirpath%%makedir% echo: GOTO END REM ##################################### REM ### UAC REM ##################################### :UAC echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !「管理者として実行」してくださいマセ ! echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GOTO END :DONE echo: echo ============================================================== echo %dirpath%%makedir% に展開しましたです echo ============================================================== echo: echo 正常に終了しますた... GOTO END :CANCEL echo: echo キャンセルしますた... GOTO END :END del akidrive.txt 2>nul echo: echo *** 何かキーを押すと閉じます *** echo: pause >nul