Войти

Показать полную графическую версию : [решено] Две системы - перезагрузка.


semiono
01-08-2010, 23:18
Пришла незатейливая идея, подскажите!...
Нужно в файле boot.ini заменить дефолтную строку, всмысле каждый раз на другую - не дефолтную.
Напомню содержимое, например мой boot.ini файл:

[boot loader]
timeout=2
default=multi(0)disk(0)rdisk(0)partition(3)\J
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\J="OS (x64)" /fastdetect
multi(0)disk(0)rdisk(0)partition(3)\I="OS (x86)" /fastdetect
C:\BOOT.BIN=":.:.:.:"

Надо зделать так, чтобы скрипт поочерёдно заменял
строку multi(0)disk(0)rdisk(0)partition(3)\J на multi(0)disk(0)rdisk(0)partition(3)\I

Смысл в том, что любая строка может быть любой, (то-есть её надо обязательно считывать
из файла, а не указать явно), например, multi(0)disk(0)rdisk(1)partition(2)\WINZZ итп.

А смысл скрипта в том чтобы просто кликнуть по нему и неглядя перезагрузиться в другую систему,
так как лезть в "control sysdm.cpl,,3" слишком далеко. Я потом даже shutdoun.exe... добавлю в скрипт.

Если надо перезагрузиться в текущую систему, то скрипт не нужен :)

Creat0R
02-08-2010, 01:23
Так:

$sBootIni_File = @HomeDrive (http://www.autoitscript.com/autoit3/docs/macros.htm#@HomeDrive) & "\boot.ini"

$sBootLoader_Default = IniRead (http://www.autoitscript.com/autoit3/docs/functions/IniRead.htm)($sBootIni_File, "Boot Loader", "Default", "")

$aOperatingSystems = IniReadSection (http://www.autoitscript.com/autoit3/docs/functions/IniReadSection.htm)($sBootIni_File, "Operating Systems")

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aOperatingSystems)-1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $aOperatingSystems[$i][0] <> $sBootLoader_Default Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
IniWrite (http://www.autoitscript.com/autoit3/docs/functions/IniWrite.htm)($sBootIni_File, "Boot Loader", "Default", $aOperatingSystems[$i][0])
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

?

Кстати, на эту тему есть Boot Manager - Выбор ОС для загрузки (http://autoit-script.ru/index.php/topic,519.0.html).

semiono
02-08-2010, 02:00
Отлично! Я сначала думал только номер партишн будет меняться, действительно и название папки заменяется!
У меня две XP на одном диске стоят, поэтому это важно было.

Я к скрипту добавлю ещё такое
#Include <Constants.au3>
#NoTrayIcon
TraySetIcon("warning")
Sleep(1000)
Shutdown(6)
:)

Boot Manager - Выбор ОС для загрузки. »
Это хорошо! Но мне нравиться когда аскетично. Чтоб вообще без окон :)

Кстати, этот скрипт можно тоже порекомендовать, может тоже найдёт любителей, офигенно простое решение,
однако мне не приходила раньше эта идея. Но зато с правильным выверенным кодом от Creat0R! Спасибо +1




© OSzone.net 2001-2012