@echo off title %~nx0 REM ################################################################################## REM ### edit by yassy http://www10.plala.or.jp/palm84/ REM ### USBメモリにSYSLINUXをインストール REM ### http://www10.plala.or.jp/palm84/archives/commandline/backup/SYSLINUX_Install.bat.txt REM https://eu7w9wsmf6a74xyjdfzl3q-on.drv.tw/archives/commandline/backup/SYSLINUX_Install.bat.txt REM ################################################################################## REM ### UAC Check REM ##################################### set Policies=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System for /f "usebackq tokens=3" %%x in (`reg query %Policies% /v EnableLUA 2^>nul ^| findstr /i EnableLUA`) do set "EnableLUA=%%x" if "%EnableLUA%"=="0x1" ( if /i not "%cd%"=="%windir%\system32" GOTO UAC ) pushd %~dp0 REM ##################################### REM ### log / Temp file REM ##################################### set temp_dir=%temp%\%random% mkdir %temp_dir% set Test1=%temp_dir%\Test1.txt set Test2=%temp_dir%\Test2.txt REM ##################################### REM ### Command Check REM ##################################### for /l %%x in (0,1,9) do if exist "syslinux-3.7%%x\win32\syslinux.exe" set "syslnx=ok" && path=%cd%\syslinux-3.7%%x\win32;%path% for /l %%x in (0,1,9) do if exist syslinux-3.8%%x\win32\syslinux.exe set "syslnx=ok" && path=%cd%\syslinux-3.8%%x\win32;%path% for /l %%x in (0,1,9) do if exist syslinux-4.0%%x\win32\syslinux.exe set "syslnx=ok" && path=%cd%\syslinux-4.0%%x\win32;%path% if exist syslinux\win32\syslinux.exe set "syslnx=ok" && path=%cd%\syslinux\win32;%path% if exist syslinux.exe set syslnx=ok if "%syslnx%"=="" GOTO NOFILE REM ##################################### REM ### START REM ##################################### echo: echo ************************************************************** echo * * echo * === SYSLINUXのインストールを行います。。。 === * echo * * echo * === 対象はフラッシュメモリなどリムーバブルメディアです === * echo * * echo ************************************************************** echo: echo ちょっとレジストリを調べるので、最初は重いです... echo: echo 続行しますか? 中断は xボタン or Ctrl-C echo: echo *** 何かキーを押すと続行します *** pause >nul REM ##################################### REM ### Media check REM ##################################### cls echo: echo: echo: echo ....... リムーバブル・メディアのドライブ名を調べています ...... echo: reg query HKLM\SYSTEM\MountedDevices | findstr /i 520065006D006F007600610062006C0065004D0065006400690061 | findstr DosDevices >"%Test1%" for %%x in (A,B,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: "%Test1%" >nul && echo %%x: - RemovableMedia>>"%Test2%" ) if not exist "%Test2%" ( reg query HKLM\SYSTEM\MountedDevices | findstr /i 550053004200530054004f00520023004400690073006b00 | findstr DosDevices >"%Test1%" for %%x in (A,B,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: "%Test1%" >nul && echo %%x: - RemovableMedia>>"%Test2%" )) if not exist "%Test2%" GOTO NO_MEDIA REM ##################################### REM ### ASK REM ##################################### :ASK cls echo: echo ....... リムーバブル・メディアのドライブ名はこんなかんじ ...... echo: REM type "%Test2%" for /f "usebackq delims=" %%x in ("%Test2%") do ( echo * %%x ) echo: echo ================================================================== echo: echo ドライブ名を入力して下さい(例. X: ) echo コロン ':' も必要です (例. X: ) echo: echo *** 中断は 99 を入力して Enter *** echo ================================================================== set /p target= ドライブ名 : echo: if "%target%"=="99" GOTO CANCEL if "%target%"=="." echo ドライブの指定が必要です! && GOTO WAIT if "%target%"=="" echo ドライブの指定が必要です! && GOTO WAIT echo %target% | findstr : >nul if ERRORLEVEL 1 echo コロン ':' も必要です! && GOTO WAIT findstr /i /b %target% "%Test2%" >nul if ERRORLEVEL 1 ( echo: echo ! リムーバブル・メディアじゃないみたいです... ! && GOTO WAIT ) else ( GOTO CHECK ) :WAIT echo: echo *** 何かキーを押すと続行します *** echo: pause >nul GOTO ASK :CHECK echo: if not exist "%target%"\ echo 存在しません? && GOTO WAIT echo: if exist "%target%\Documents and Settings\" GOTO DOCSET if exist %target%\Windows\ GOTO WIN if exist %target%\Documents\ GOTO DOCU set nakami=nasi dir /a /b %target%\ >nul 2>nul && set nakami=ari if "%nakami%"=="nasi" GOTO Install echo: echo -------------------------------------------------------------- echo %target%ドライブにはにファイルがあります。ほんまにおk? echo -------------------------------------------------------------- set /p select= [y,N] : if /i "%select%"== "y" GOTO NENNOSHI GOTO CANCEL :NENNOSHI set select= cls echo: echo -------------------------------------------------------------- echo %target%ドライブにはファイルがあります。ほんまにほんまにおk? echo -------------------------------------------------------------- set /p select= [y,N] : echo: if /i "%select%"== "y" GOTO Install GOTO CANCEL REM ##################################### REM ### Install REM ##################################### :Install REM set path=.\syslinux\win32;%path% syslinux.exe --install --active --mbr %target% REM if not ERRORLEVEL 1 GOTO DONE REM syslinux.exe --stupid --force %target% REM pause if ERRORLEVEL 1 GOTO ERROR GOTO DONE REM ##################################### REM ### UAC REM ##################################### :UAC echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !「管理者として実行」してくださいマセ ! echo: echo *** 何かキーを押すと閉じます *** echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: pause >nul GOTO :EOF REM ##################################### REM ### ERROR REM ##################################### :WIN echo: echo ! 指定のドライブには Windows フォルダがあります ! echo ! ドライブ名を確認してください。 ! GOTO CANCEL :DOCU echo: echo ! 指定のドライブには Documentsフォルダがあります ! echo ! ドライブ名を確認してください。 ! GOTO CANCEL :DOCSET echo: echo ! 指定のドライブには Documents and Settings フォルダがあります ! echo ! ドライブ名を確認してください。 ! GOTO CANCEL :ERROR echo: echo ** ! エラー出ますた ! ! ** GOTO END :NOFILE echo: echo ============================================================== echo syslinux.exe がありませんです... echo ============================================================== GOTO END :NO_MEDIA cls echo: echo ============================================================== echo !!! リムーバブル・メディア がありませんです... echo ============================================================== GOTO END REM ##################################### REM ### DONE REM ##################################### :DONE echo: echo 終了しますた...エラーなければおk! GOTO END :CANCEL echo: echo キャンセルしますた... GOTO END :END echo: echo *** 何かキーを押すと閉じます *** pause >nul rd /s /q "%temp_dir%"