Додати опцію boot.ini з партією


1

Мені потрібно створити пакетний файл, який додає текст до останнього рядка у файлі boot.ini, наприклад, останній рядок мого boot.ini:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

мені потрібно додати / bootlogo / noguiboot параметр, тому рядок boot.ini слід змінити у:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /bootlogo /noguiboot

Чи можу я це зробити з пакетним файлом? Є ще один спосіб зробити це?

Дякую.

Відповіді:


0

Не знаю, чи я розумію ваше запитання, але додати рядок досить просто:

ехо "blabla" >> c: \ boot.ini


ні, з відлунням "blabla" >> c: \ boot.ini ви додаєте текст у наступному рядку файлу, мені потрібно додати текст в останньому рядку файлу, не створити новий рядок ...
aleroot

0

Я не впевнений, що ви можете зробити це за допомогою командного рядка WinXP ванілі. Спробуйте безкоштовний GPatch .


0

Я, мабуть, використаю SEDдля цього:

@echo off
cd /d c:\
attrib -r -h -s boot.ini
sed -e "s/fastdetect$/fastdetect \/bootlogo \/noguiboot/" boot.ini > boot.$$$
ren boot.ini boot.old
ren boot.$$$ boot.ini
attrib +r +h +s boot.ini

SEDдоступний як частина GnuWin, або ви можете знайти окрему версію тут . Крім того, як я вже писав, SEDвищезазначене зробить заміну на всіх рядках, що закінчуються на "fastboot". Ви можете збільшити пошуковий рядок довше, щоб гарантувати, що ви працюєте лише на одному конкретному рядку.


Немає підстав для пошуку та заміни, додавання до файлу є нормальним. Він просто хоче шлях, який не виводить новий рядок.
Привіт71,

Якщо останній рядок закінчується одним або декількома новими рядками, техніка "відлуння" додасть два нові комутатори (як у вашому прикладі, які я протестував у XP) у новий рядок самостійно. Крім того, ваша КОПІЯ вийде з ладу, оскільки boot.ini - це прихований системний файл.
BillP3rd

0

Клацніть правою кнопкою миші мій комп'ютер, виберіть властивості. Перейдіть на вкладку «Додатково», а потім у розділі СТАРТ і ВІДНОВЛЕННЯ виберіть Установки. На наступному екрані в розділі Запуск системи натисніть Редагувати. Це відкриває файл Boot.ini за допомогою Блокнота, щоб ви могли додати ці та інші перемикачі або внести інші зміни.


0

Це можна зробити за допомогою наступного вирішення:

set rand=%RANDOM%
echo /bootlogo /noguiboot > %TEMP%\%rand%.txt
attrib -R -S -H C:\boot.ini
copy C:\boot.ini+%TEMP%\%rand%.txt C:\boot.ini
attrib +R +S +H C:\boot.ini
del %TEMP%\%rand%.txt

В основному це створює тимчасовий файл, повторює ваші дані до кінця, а потім використовує copyдля з'єднання C:\boot.iniз тимчасовим файлом.


0

Я знайшов рішення:

attrib -r -s -h %SystemDrive%\boot.ini
gsar.exe -o -i -s:032:047bootlogo:032:047noguiboot -r %SystemDrive%\boot.ini
gsar.exe -o -sfastdetect -rfastdetect:032:047bootlogo:032:047noguiboot %SystemDrive%\boot.ini
attrib +r +s +h %SystemDrive%\boot.ini

0

Ну, boot.ini - це системний файл. Перш ніж змінювати це, слід видалити цей атрибут.

Прочитайте і спробуйте моє рішення. Він шукає всі параметри завантаження Windows, щоб папка назвала WINDOWS (всі великі регістри) у boot.ini. Потім він відтворює boot.ini відповідно до вашого вибору - додати або видалити "/ bootlogo / noguiboot" - для кожної опції завантаження Windows.

@echo off
SETLOCAL EnableDelayedExpansion

echo.This batch is an editor for all Windows boot options in boot.ini.
echo.- Limitations: works only with 8 parameters and detects only Windows instalations with folders named "WINDOWS" - all uppercased
echo.

::save the current path
set pathbak=%cd%
for /f "tokens=1* delims=:" %%a in ("%pathbak%") do (
  set drvbak=%%a
)

::put bellow the drive where boot.ini is
c:
cd \

::remove system and hidden attributes from boot.ini
attrib -r -s -h boot.ini

::create new file
echo.>boot.new

::read boot.ini
for /f "tokens=1* delims=\" %%a in (boot.ini) do (
  if "%%b"=="" (
    echo.%%a>>boot.new
  )
  for /f "tokens=1* delims==" %%c in ("%%b") do (
    ::find Windows boot options
    if "%%c" neq "WINDOWS" (
      echo.%%a\%%b>>boot.new
    ) else (
      if "%%b"=="WINDOWS" (
        echo.%%a\%%b>>boot.new
      ) else (
        ::split parameters
        for /f "tokens=1,2,3,4,5,6,7,8* delims=/" %%e in ("%%d") do (
          ::remove spaces after strings
          for /f "delims= " %%n in ("%%a") do set __a=%%n
          for /f "delims= " %%n in ("%%c") do set __c=%%n
          for /f "delims=" %%n in ("%%e") do set __e=%%n
          for /f "delims= " %%n in ("%%f") do set __f=%%n
          for /f "delims= " %%n in ("%%g") do set __g=%%n
          for /f "delims= " %%n in ("%%h") do set __h=%%n
          for /f "delims= " %%n in ("%%i") do set __i=%%n
          for /f "delims= " %%n in ("%%j") do set __j=%%n
          for /f "delims= " %%n in ("%%k") do set __k=%%n
          for /f "delims= " %%n in ("%%l") do set __l=%%n
          for /f "delims= " %%n in ("%%m") do set __m=%%n

          echo.Found a WINDOWS boot option in partition "!__a!":
          echo.- text seen on boot: !__e!
          if "!__f!" neq "" (
            echo.- parameter 1: /!__f!
          ) else (
            echo.- parameter 1:
          )
          if "!__g!" neq "" (
            echo.- parameter 2: /!__g!
          ) else (
            echo.- parameter 2:
          )
          if "!__h!" neq "" (
            echo.- parameter 3: /!__h!
          ) else (
            echo.- parameter 3:
          )
          if "!__i!" neq "" (
            echo.- parameter 4: /!__i!
          ) else (
            echo.- parameter 4:
          )
          if "!__j!" neq "" (
            echo.- parameter 5: /!__j!
          ) else (
            echo.- parameter 5:
          )
          if "!__k!" neq "" (
            echo.- parameter 6: /!__k!
          ) else (
            echo.- parameter 6:
          )
          if "!__l!" neq "" (
            echo.- parameter 7: /!__l!
          ) else (
            echo.- parameter 7:
          )
          if "!__m!" neq "" (
            echo.- parameter 8: /!__m!
          ) else (
            echo.- parameter 8:
          )
          echo.
          set bootlogo=0
          if "!__f!"=="bootlogo" set bootlogo=1
          if "!__g!"=="bootlogo" set bootlogo=1
          if "!__h!"=="bootlogo" set bootlogo=1
          if "!__i!"=="bootlogo" set bootlogo=1
          if "!__j!"=="bootlogo" set bootlogo=1
          if "!__k!"=="bootlogo" set bootlogo=1
          if "!__l!"=="bootlogo" set bootlogo=1
          if "!__m!"=="bootlogo" set bootlogo=1
          set noguiboot=0
          if "!__f!"=="noguiboot" set noguiboot=1
          if "!__g!"=="noguiboot" set noguiboot=1
          if "!__h!"=="noguiboot" set noguiboot=1
          if "!__i!"=="noguiboot" set noguiboot=1
          if "!__j!"=="noguiboot" set noguiboot=1
          if "!__k!"=="noguiboot" set noguiboot=1
          if "!__l!"=="noguiboot" set noguiboot=1
          if "!__m!"=="noguiboot" set noguiboot=1
          set /a bootlogonoguiboot=!bootlogo!+!noguiboot!
          if "!bootlogonoguiboot!"=="2" (
            echo.Do you want to remove /bootlogo /noguiboot parameters for that Windows boot option [y or n]?
            set /p choice1=
            if "!choice1!"=="y" (
              set newoption=!__a!\!__c!=!__e!
              if "!__f!" neq "" if "!__f!" neq "bootlogo" if "!__f!" neq "noguiboot" set newoption=!newoption! /!__f!
              if "!__g!" neq "" if "!__g!" neq "bootlogo" if "!__g!" neq "noguiboot" set newoption=!newoption! /!__g!
              if "!__h!" neq "" if "!__h!" neq "bootlogo" if "!__h!" neq "noguiboot" set newoption=!newoption! /!__h!
              if "!__i!" neq "" if "!__i!" neq "bootlogo" if "!__i!" neq "noguiboot" set newoption=!newoption! /!__i!
              if "!__j!" neq "" if "!__j!" neq "bootlogo" if "!__j!" neq "noguiboot" set newoption=!newoption! /!__j!
              if "!__k!" neq "" if "!__k!" neq "bootlogo" if "!__k!" neq "noguiboot" set newoption=!newoption! /!__k!
              if "!__l!" neq "" if "!__l!" neq "bootlogo" if "!__l!" neq "noguiboot" set newoption=!newoption! /!__l!
              if "!__m!" neq "" if "!__m!" neq "bootlogo" if "!__m!" neq "noguiboot" set newoption=!newoption! /!__m!
              echo.!newoption!>>boot.new
            ) else (
              echo.%%a\%%b>>boot.new
            )
            set choice1=
          ) else (
            if "!bootlogonoguiboot!" neq "2" echo.Do you want to add /bootlogo /noguiboot parameters for that Windows boot option [y or n]?
            (
              set /p choice1=
              if "!choice1!"=="y" (
                set newoption=!__a!\!__c!=!__e!
                if "!__f!" neq "" if "!__f!" neq "bootlogo" if "!__f!" neq "noguiboot" set newoption=!newoption! /!__f!
                if "!__g!" neq "" if "!__g!" neq "bootlogo" if "!__g!" neq "noguiboot" set newoption=!newoption! /!__g!
                if "!__h!" neq "" if "!__h!" neq "bootlogo" if "!__h!" neq "noguiboot" set newoption=!newoption! /!__h!
                if "!__i!" neq "" if "!__i!" neq "bootlogo" if "!__i!" neq "noguiboot" set newoption=!newoption! /!__i!
                if "!__j!" neq "" if "!__j!" neq "bootlogo" if "!__j!" neq "noguiboot" set newoption=!newoption! /!__j!
                if "!__k!" neq "" if "!__k!" neq "bootlogo" if "!__k!" neq "noguiboot" set newoption=!newoption! /!__k!
                if "!__l!" neq "" if "!__l!" neq "bootlogo" if "!__l!" neq "noguiboot" set newoption=!newoption! /!__l!
                if "!__m!" neq "" if "!__m!" neq "bootlogo" if "!__m!" neq "noguiboot" set newoption=!newoption! /!__m!
                set newoption=!newoption! /bootlogo /noguiboot
                echo.!newoption!>>boot.new
              ) else (
                echo.%%a\%%b>>boot.new
              )
              set choice1=
            )
          )
        )
      )
    )
  )
)

cls
echo......................
type boot.new
echo......................

::replace current boot.ini
copy boot.ini boot.bak.%random%
copy boot.new boot.ini

::restore system and hidden attributes
attrib +r +s +h boot.ini

::restore previous path
%drvbak%:
cd %pathbak%

0

Для редагування boot.iniви можете спробувати:

run>sysdm.cpl

На вкладці Додатково натисніть Налаштування, а потім Редагувати. Це відкриється boot.iniв текстовому редакторі (Блокнот у моєму випадку). Внесіть зміни та збережіть (попередньо зберегли копію оригіналу на всякий випадок!).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.