Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 4

Автор: Nagual
Дата сообщения: 20.10.2007 12:13
ASTERIKS88
что, с bootcfg разбираться впадлу чтоль?

Добавлено:
Параметры:
/COPY Создает копию имеющегося элемента списка загрузки.

/DELETE Удаляет существующий элемент списка загрузки в секции.

/QUERY Отображает элементы списка загрузки и их параметры.

/RAW Позволяет указать любой добавляемый параметр.

/TIMEOUT Задает значение таймаута.

/DEFAULT Задает используемый по умолчанию элемент списка загрузки.

/EMS Позволяет задавать переключатель /redirect
без дисплейной работы.

/DEBUG Позволяет задавать порт и скорость для
удаленной отладки.

/ADDSW Позволяет добавлять определенные переключатели.

/RMSW Позволяет удалять определенные переключатели.

/DBG1394 Позволяет настраивать отладку 1394 порта.

Добавлено:
ASTERIKS88
если подробнее напишешь, что же тебе нужно, можно подобрать алго, а так задача невнятная, доделывай сам...
Автор: ASTERIKS88
Дата сообщения: 20.10.2007 13:27
Nagual , конечно не в падлу Я как раз, сначала, bootcfg глянул, а уж потом здесь вопросы задавать начал!


Цитата:
ASTERIKS88
если подробнее напишешь, что же тебе нужно, можно подобрать алго, а так задача невнятная, доделывай сам...


Уж куда подробнее?!

Ну да ладно, попытаюсь подробнее: Чтобы загрузиться в safe mode при перезагрузке или включении, нужно жать кнопку F8. Затем, когда появляется меню, нужно кнопкой "стрелка вверх" подняться вверх и выбрать способ загрузки "Безопасный режим" - получаем загрузку в безопасном режиме Вот я и интересуюсь как написать батник чтобы он сотворил тоже самое, т.е. перезагрузил комп в "Безопасный режим"
Если такое вообще возможно

а приведённый батник

Код: shutdown -r -f -t 01
Автор: Nagual
Дата сообщения: 20.10.2007 13:55
ASTERIKS88
при следующей перезагрузке системы надо чтобы опять она входила в безопасный режим или надо, чтобы все таки сохранялось предыдущее состояние системы?
или это вообще неважно?
Варианты:
— можно просто добавить строку загрузки в boot.ini, которая по дефолу будет грузить safemode и уменьшить время на ожидание
— можно изменить строку загрузки, чтобы система постоянно и без вопросов грузилась дальше в safemode
или то, что дальше будет с загрузкой системы вообще по барабану?
Автор: ASTERIKS88
Дата сообщения: 20.10.2007 14:01
Система должна грузиться и перезагружаться как обычно. Батник как частный случай перезагрузки.
Автор: NIKZZZZ
Дата сообщения: 20.10.2007 14:52
ASTERIKS88

Цитата:
Система должна грузиться и перезагружаться как обычно. Батник как частный случай перезагрузки.

Примерная структура батника:
1. Сохраняешь boot.ini (copy c:\boot/ini %Temp% /y)
2. Создаешь новый с параметром /safeboot:minimal (echo ...>c:\boot.ini)
3. Прописываешь в реестр восстановление boot.ini (Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "xxx" /t REG_SZ /d "copy %temp%\boot.ini c:\ /y"
4. Перезагрузка ( shutdown ...)


Автор: ASTERIKS88
Дата сообщения: 20.10.2007 15:12
Благодарю NIKZZZZ, теперь вроде понял
Автор: NIKZZZZ
Дата сообщения: 20.10.2007 15:30
ASTERIKS88

Цитата:
3. Прописываешь в реестр восстановление boot.ini (Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "xxx" /t REG_SZ /d "copy %temp%\boot.ini c:\ /y"

Наверное надо так:

Код: Reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "xxx" /t REG_SZ /d "cmd /c copy %temp%\boot.ini c:\ /y"
Автор: Elroir
Дата сообщения: 20.10.2007 17:56
NIKZZZZ
Если я не ошибаюсь, в безопасном режиме RunOnce не выполняется.
Автор: Nagual
Дата сообщения: 21.10.2007 04:13
ASTERIKS88
похоже, в безопаске вообще ничего нельзя запустить, по крайней мере я не нашел еще способа, папки автозагрузок не работают, реестр тоже, правда все уголки реестра оттестить мне уже было впадлу
выкладываю наброски, засим и откланиваюсь
@echo off
:: chcp 1251>nul
bootcfg /raw "/safeboot:minimal" /id 1
:: echo>"%allusersprofile%\Главное меню\Программы\Автозагрузка\run.cmd" bootcfg /raw "/fastdetect /NoExecute=OptIn" /id 1 ^&del/q %%0
echo>"%temp%\run.cmd" bootcfg /raw "/fastdetect /NoExecute=OptIn" /id 1 ^&reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v bootrun /f ^&del/q %%0
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v bootrun /d "%temp%\run.cmd"
если найдешь способ автозагрузки в безопасном режиме, то доделать будет просто, если нет, ну, значит, не судьба
Автор: Maza Faka
Дата сообщения: 21.10.2007 08:05
ASTERIKS88
А нельзя просто добавить в boot.ini строку с загрузкой в safe mode? При загрузке у пользователя в течении xx-секунд будет выбор, что грузить.

Код:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU safe mode" /noexecute=optin /fastdetect /safeboot:minimal
Автор: qrock
Дата сообщения: 22.10.2007 07:49
Товарищи подскажите пути решения для следующей ситуации. Есть набор папок, с названиями по дате вида YYYYMMDD (например, 20071022). Необходимо удалить папки с содержимым у которых дата в названии меньше текущей более чем на n-дней.
Как организовать такое?
Автор: NIKZZZZ
Дата сообщения: 22.10.2007 11:07
ASTERIKS88
Elroir
Nagual

Цитата:
Если я не ошибаюсь, в безопасном режиме не выполняется.


Цитата:
похоже, в безопаске вообще ничего нельзя запустить, по крайней мере я не нашел еще способа

Да, действительно RunOnce не отрабатывается. Отрабатывается RunOnceEX.

Код: Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\1" /v "SafeBackUp" /t REG_SZ /d "copy %temp%\boot.ini c:\ /y"
Автор: Nagual
Дата сообщения: 22.10.2007 13:14
NIKZZZZ
и действительно, работает, что-то не получалось у меня без папки запускать, то есть, с корня ветки реестра не работало

ASTERIKS88
лови окончательное решение
благодаря NIKZZZZ теперь работает отлично
Код: @echo off
bootcfg/raw "/safeboot:minimal" /id 1
reg add "hklm\software\microsoft\windows\currentversion\runonceex\a" /v "bootrun" /d "bootcfg /raw """/fastdetect /noexecute=optin""" /id 1" /f
shutdown -r -t 0
Автор: NIKZZZZ
Дата сообщения: 22.10.2007 14:46
Nagual

Цитата:
работает, что-то не получалось у меня без папки запускать

И не получится. Причем название раздела и параметра четко определяем последовательность запуска . Кроме того, в отличии от RunOnce, RunOnceEx ждет завершения процесса.


Автор: king_stiven
Дата сообщения: 22.10.2007 15:51
qrock
В шапке может быть
Автор: lexalug
Дата сообщения: 22.10.2007 17:45
Помогите новичку.
Например, есть файл qwe.bat.
При нажатии на него, нужно, чтобы он на экран
выводил только имя своего файла, или расширение.
Вот так это в ДОС-е:

echo %0 - в файле qwe.bat
qwe - выводится на экран


Вот так в Windows XP:

echo %~n0 - в файле qwe.bat
qwe - выводится на экран

или если хочу только расширение

echo %~x0 - в файле qwe.bat
bat - выводится на экран


А как сделать это в Windows 98?
Вышеперечисленные методы не проходят:

echo %0 - в файле qwe.bat
qwe.bat - выводится на экран, т.е. полное имя =(

echo %~n0 - в файле qwe.bat
~n0 - выводится на экран, т.е. вообще таких параметров не знает =(
Автор: AndryG
Дата сообщения: 22.10.2007 18:08
В папку потихоньку сваливаются arj архивы ... когда одинарные, когда многотомники ... надобно, когда архив весь придет в папку (все тома), распаковать в определенное место.

Вопрос. Как узнать, что я имею ВСЕ тома архива?
Полазил по справке архиватора -- ничего не нашел по теме .. единственное, что придумал, так это открывать архив в временную папку и по errorlevel определеять, открылся или нет. если да, то открывать и в нужную папку ... иначе немного подождать и опять пробовать открыть.

Но тода получаю глюк ... если придет битый архив, то я до посинения буду ждать, когда придут все тома архива.

Пробовал с архиватором ... по errorlevel не различаются ошибки "битый архив" и "не все тома".

Кто что подскажет?
Автор: vu1tur
Дата сообщения: 22.10.2007 18:53
AndryG

Цитата:
Полазил по справке архиватора -- ничего не нашел по теме .. единственное, что придумал, так это открывать архив в временную папку

ну тогда уж arj t — проверять на целостность.

Цитата:
Но тода получаю глюк ... если придет битый архив, то я до посинения буду ждать, когда придут все тома архива.

добавить счетчик, и скрипт после N попыток будет уведомлять об ошибке и удалять/перемещать архивы в какую-то папочку.
Автор: 4ipollo
Дата сообщения: 22.10.2007 21:12
Есть name.exe файл перед запуском которого нужно откатить системную дату на N лет назад, причем N>=4, а по окончании работы этого name.exe восстановить дату обратно. Как реализовать?

Почитал форум, но так и не нашел подходящего кода.
Кто наставит на путь истинный?
Автор: Elroir
Дата сообщения: 22.10.2007 21:22
4ipollo
Что выдает команда "date" (обе строчки)?
Автор: 4ipollo
Дата сообщения: 22.10.2007 21:42
Elroir
Да, обе.

Текущая дата:
Введите новую дату(дд:мм:гг):

А как это использовать в моей ситуации не могли бы подсказать?
Или линков где про это почитать можно..
Автор: Elroir
Дата сообщения: 22.10.2007 21:57
4ipollo
Я, видимо, неправильно вопрос задал
Меня интересовал формат даты. Формат во второй строчке, ты привел. А в первой как она выглядит?
Это нужно для того, чтобы написать батник, решающий твою проблему.
Автор: KapralBel
Дата сообщения: 22.10.2007 22:00
4ipollo

Код: @Echo Off
Set dtOld=%Date%
Set dtYear=%dtOld:~-4%
Set dtDM=%dtOld:~0,-4%
Set /a dtYear1=dtYear-5
Set dtNew=%dtDM%%dtYear1%
Echo %dtNew% |Date
Echo Нужн. действия
Echo Сейчас дата %Date%
Echo %dtOld% |Date

set dt
Автор: Elroir
Дата сообщения: 22.10.2007 22:06
KapralBel
А если там формат "yy", а не "yyyy"?
Автор: 4ipollo
Дата сообщения: 22.10.2007 22:15
KapralBel
Спасибо, сейчас попробую.

Elroir
Там написано 21.10.2007. Я так понимаю это тоже (дд:мм:гг) ? Или нет?
Автор: Elroir
Дата сообщения: 22.10.2007 22:30
4ipollo

Цитата:
Там написано 21.10.2007. Я так понимаю это тоже (дд:мм:гг) ? Или нет?

Немножко не так: гг - это 07, а гггг - это 2007 (то есть двух или четырехзначное обозначение).
Но в данном случае - это неважно. Код KapralBel-а великолепно справляется с заданием. Только вместо строчки "Echo Нужн. действия", напиши "start /wait name.exe".
Автор: 4ipollo
Дата сообщения: 22.10.2007 22:39
Elroir
KapralBel

Спасибо за помощь! Очень выручили!
Автор: lexalug
Дата сообщения: 22.10.2007 22:54

Цитата:
Например, есть файл qwe.bat.
При нажатии на него, нужно, чтобы он на экран
выводил только имя своего файла, или расширение.
Вот так это в ДОС-е:

echo %0 - в файле qwe.bat
qwe - выводится на экран


Вот так в Windows XP:

echo %~n0 - в файле qwe.bat
qwe - выводится на экран

или если хочу только расширение

echo %~x0 - в файле qwe.bat
bat - выводится на экран


А как сделать это в Windows 98?
Вышеперечисленные методы не проходят:

echo %0 - в файле qwe.bat
qwe.bat - выводится на экран, т.е. полное имя =(

echo %~n0 - в файле qwe.bat
~n0 - выводится на экран, т.е. вообще таких параметров не знает =(

ну неужели никто не знает? =(
Автор: Maza Faka
Дата сообщения: 23.10.2007 08:44
4ipollo
KapralBel
А не проще так:

Код:
@echo off
set tempdate=%date%
date 01-01-04
notepad.exe
date %tempdate%
Автор: 01MDM
Дата сообщения: 23.10.2007 09:01
lexalug

Код:
@echo off
mkdir test
copy %0 test >nul
cd test
ren *.* *.
dir /b
del *.
cd ..
rd test

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.