!BAT ::small batch to shift HD possitions by Ilko ::the purpose is to set USB disk last or make sure it is, even if boot grub4dos from a CD, shifting all other hard disks one possition up ::if it was seen as a floppy call PLoP clear echo Shifting USB disk to be last... ::debug off errorcheck off ::find if PLoP is already loaded ::http://forum.plop.at/index.php/topic,165.0.html cat --hex --locate=PoLPu@ (md)0x3D0+0x130 > nul && goto :plop_detected goto :start :start ::echo Locating usbdrive.tag ls /usbdrive.tag > nul || find --set-root --devices=hf /usbdrive.tag > nul checkrange 0x80 read 0x82A0 > nul && goto :usb_is_hd0 checkrange 0x00,0x01 read 0x82A0 > nul && goto :usb_is_fd checkrange 0x00,0x01,0x80 read 0x82A0 > nul || goto :usb_is_not_hd0 :plop_detected echo echo It seems PLoP has been loaded checkrange 0:2 calc *0x475&0xff > nul && goto :start set /a hdn=*0x475 & 0xff > nul set /a hdm=%hdn% - 1 > nul map (hd-1) (hd-2) map --harddrives=%hdm% map --rehook goto :start :usb_is_not_hd0 ::http://cvwyg-blog.appspot.com/grub/GRUB4DOS5mlsy.htm ::http://reboot.pro/16069/page__view__findpost__p__145675 ::Other internal variables in README_GRUB4DOS.txt ::get current root drive set /a cur_drv=*0x82A0 & 0x7F > nul ::number of hard disks as BIOS reports them set /a hdn=*0x475 & 0xff > nul set /a hdm=%hdn% - 1 > nul if %cur_drv%==%hdm% echo USB disk is already last- hd%cur_drv% && set /a HDCNT=%hdn% && set /a RDSK=%cur_drv% && goto :s_end echo USB disk was not hd0, setting it hd0 map () (hd0) map (hd0) () map --rehook goto :usb_is_hd0 :usb_is_hd0 checkrange 2 calc *0x475 & 0xFF > nul && goto :hd2 checkrange 1 calc *0x475 & 0xFF > nul && goto :hd1 checkrange 3 calc *0x475 & 0xFF > nul && goto :hd3 checkrange 4 calc *0x475 & 0xFF > nul && goto :hd4 checkrange 5 calc *0x475 & 0xFF > nul && goto :hd5 checkrange 6:999 calc *0x475 & 0xFF > nul && goto :hd6 goto :s_end :hd6 echo Found more than 5 hard disks or mass storage devices attached! echo It's safer to shut down the computer and disconnect or disable temporarily the unneeded ones echo if you want to install Windows 2000/XP/2003 on the disk numbered above 4 and you boot from USB disk. echo Will set USB disk as hd4 so it should be safe to install to hd0-hd3. pause Press any key to continue... goto :hd5 :hd5 set /a HDCNT=5 > nul set /a RDSK=%HDCNT% - 1 > nul map (hd0) (hd4) map (hd1) (hd0) map (hd2) (hd1) map (hd3) (hd2) map (hd4) (hd3) map --rehook echo Found %HDCNT% disks, set USB disk hd%RDSK% ::pause --wait=1 goto :s_end :hd4 set /a HDCNT=4 > nul set /a RDSK=%HDCNT% - 1 > nul map (hd0) (hd3) map (hd1) (hd0) map (hd2) (hd1) map (hd3) (hd2) map --rehook echo Found %HDCNT% disks, set USB disk hd%RDSK% ::pause --wait=1 goto :s_end :hd3 set /a HDCNT=3 > nul set /a RDSK=%HDCNT% - 1 > nul map (hd0) (hd2) map (hd1) (hd0) map (hd2) (hd1) map --rehook echo Found %HDCNT% disks, set USB disk hd%RDSK% ::pause --wait=1 goto :s_end :hd2 set /a HDCNT=2 > nul set /a RDSK=%HDCNT% - 1 > nul map (hd0) (hd1) map (hd1) (hd0) map --rehook echo Found %HDCNT% disks, set USB disk hd%RDSK% ::pause --wait=1 goto :s_end :hd1 set /a HDCNT=1 > nul set /a RDSK=%HDCNT% - 1 > nul echo Found %HDCNT% disks, set USB disk hd%RDSK% ::pause --wait=1 goto :s_end :usb_is_fd ::start PLoP ::find if PLoP is already loaded ::http://forum.plop.at/index.php/topic,165.0.html ::cat --hex --locate=PoLPu@ (md)0x3D0 0x130 && goto XXX cat --hex --locate=PoLPu@ (md)0x3D0 0x130 && echo It seems PLoP was already loaded && goto :s_end echo It seems your USB disk was seen as a Floppy/ZIP disk by BIOS. echo Will try to launch PLoP boot manager which might help to make the USB disk seen as a hard disk. echo This is experimental and is not guaranteed to work as expected. echo If you are using USB keyboard, you won't be able to use it after the menu reloads. echo echo The highlighted menu entry will auto start after 10 seconds. You can shut down or reset the computer if it's not the desired one. echo pause --wait=20 Press any key to continue or wait 20 seconds to timeout ls /plpbt.bin > nul || find --set-root --devices=hf /plpbt.bin savedefault ::debug on chainloader /plpbt.bin boot goto :s_end :s_end echo errorcheck on ::debug on exit