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

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

Автор: SLIDER999
Дата сообщения: 28.05.2010 15:36
скажите как реализовать вопрос в bat файле.
хочу сделать следующее:

Цитата:
: DotNET
reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 RunOnceEx_DotNET.reg
if exist RunOnceEx_DotNET.reg (
echo "Хотите установить DotNET?"
если y - goto office
если n - reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777

)
Автор: wolf0425
Дата сообщения: 28.05.2010 15:45
как бы в sed сделать скрипт на удаление группы строк:
первая строка группы содержит string1
последняя строка группы является ближайшей содержащей string2

ну и невредно сразу зациклить - убить все такие группы.
Автор: us0r
Дата сообщения: 28.05.2010 15:47
SLIDER999
set /p answer="Choose your destiny: "
IF %answer%=="y" goto office
ELSE IF %answer%=="n" (reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777)
ELSE (chcp 1251 && msg * А вы что, собственно, имели ввиду?)

Что- то с if- else не пошло...
Автор: Akela50
Дата сообщения: 28.05.2010 15:49
us0r

Ага! Соорудил батник Sleep.bat из трёх строк:

@echo off
cls
rundll32.exe powrprof.dll,SetSuspendState Sleep

Запустил. Всё ОК. Ща ярлычок приклею и - в Быстрый запуск.

Спасибо!
))))))))
Автор: SLIDER999
Дата сообщения: 28.05.2010 16:14
us0r
вот так не работает


Цитата:
@echo off
TITLE Џ®¦ «г©бв , Ї®¤®¦¤ЁвҐ!

: DotNET
reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 RunOnceEx_DotNET.reg /y
if exist RunOnceEx_DotNET.reg (
set /p answer="•®вЁвҐ гбв -®ўЁвм DotNET? („  - y | ЌҐв - n) :"
if %answer%=="y" goto Exit
else if %answer%=="n" (reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777)
else (chcp 1251 && msg * Ђ ўл зв®, б®Ўб⢥--®, Ё¬Ґ«Ё ўўЁ¤г?)
)

:Exit
pause
Exit

Пишет "непредвиденное появление goto"
Автор: us0r
Дата сообщения: 28.05.2010 16:20
Там что- то с if - else... Х.з., всё пытаюсь оформить эту конструкцию и не получается...
Может wolf0425 что подскажет?
Автор: cluster
Дата сообщения: 28.05.2010 16:35
SLIDER999
us0r

А зачем там после else

Цитата:
if %answer%=="n"


Можно же оформить без этого:
else (команды)
Автор: us0r
Дата сообщения: 28.05.2010 16:47
Всё, я запутался. Хэлп.
Автор: SLIDER999
Дата сообщения: 28.05.2010 16:47
Все, сделал

Цитата:
otNET
reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 RunOnceEx_DotNET.reg /y
if exist RunOnceEx_DotNET.reg set /p answer="•®вЁвҐ гбв -®ўЁвм DotNET? („  - y | ЌҐв - n) : "
if %answer%==y goto Office
if %answer%==n (reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 /f)


Как теперь убрать сообщения "Операция успешно завершена" ?
Автор: us0r
Дата сообщения: 28.05.2010 17:03
Т.е. тебе нужно очистить консоль вообще? Тогда cls тебе в помощь)
Автор: SLIDER999
Дата сообщения: 28.05.2010 17:15
Все, получилось в итоге вот так:

Цитата:
@echo off
cls
TITLE Џ®¦ «г©бв , Ї®¤®¦¤ЁвҐ!

otNET
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777
if %ERRORLEVEL%==1 goto Office
set /p answer="•®вЁвҐ гбв -®ўЁвм DotNET? („  - y | ЌҐв - n) : "
if %answer%==y goto Office
if %answer%==n reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 /f

ffice
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888
if %ERRORLEVEL%==1 goto Exit
set /p answer="•®вЁвҐ гбв -®ўЁвм Office? („  - y | ЌҐв - n) : "
if %answer%==y goto Exit
if %answer%==n reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888 /f

:Exit
Exit

Теперь хочу, чтоб через Х секунд автоматом ответ был ДА. Как реализовать? (через пинг локалхост?)
Автор: us0r
Дата сообщения: 28.05.2010 17:16
cluster
Там попытка организовать проверку на предмет одекватности личности правильности поданых для обработки символов. Не судьба. По ходу логика написания как конструкции if - else осталась для меня недоступной... Ссылку не подкинете, где бы почитать? А то чёт Яндегз не сильно делится инфой...

Добавлено:
SLIDER999
Так проще всего...
Автор: Mark_Titov
Дата сообщения: 28.05.2010 19:08
...Доброго дня всем.

Кто подскажет как реализовать такой батник -

Есть папка "Log" на серевере \\server\C:\Log в ней еще 10 папок типа log1, log2 и тд., в каждой из них по 10-30 txt файлов (сами логи) с названием текущей даты созданного лога.
Нужно 30 числа каждого месяца в 00:00 перемещать все подпапки с \\server\C:\Log в другую вновь созданную папку в корень диска C:\ того же сервера с названием текущей даты на момент перемещения...
То есть так -
30.05.2010 и вней все папки с логами log1, log2 и т.д...
30.06.2010 и вней все папки с логами log1, log2 и т.д...
30.07.2010 и вней все папки с логами log1, log2 и т.д...
Надеюсь вашу помощь гуру...

Заранее благодарю...
Автор: cluster
Дата сообщения: 28.05.2010 20:46
SLIDER999
Я предлагал

Цитата:
if %answer%==y goto Exit
else reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888 /f

т.е. при нажатии на любую клавишу, кроме "y", будет выполняться указанная команда.

us0r
мне достаточно внутренней справки IF /? + готовые примеры из сети.
Автор: BagaBaga
Дата сообщения: 28.05.2010 23:24
Можно ли (с помощью sed?) преобразовать строчку вида

1234 фыва олд, йцук шщз, вап ить

в кучку строчек
1234 фыва олд
1234 йцук шщз
1234 вап ить

т.е. строка начинается с числа (целого), затем идет пробел, затем - текстовые строки; взять это число и дописать перед каждым последующим элементом, разделитель элементов - запятая.

решение в виде такой строки
1234 фыва олд, 1234 йцук шщз, 1234 вап ить
тоже устроит (т.е. без "разрывания на строки")
Автор: king_stiven
Дата сообщения: 29.05.2010 00:44
us0r

Цитата:
Не судьба. По ходу логика написания как конструкции if - else осталась для меня недоступной... Ссылку не подкинете, где бы почитать?

В справке к команде
if /?
или в справке виндовской
Использование оператора else
Оператор else должен размещаться в той же строке, что и команда if. Пример:

IF EXIST имя_файла. (
del имя_файла.
) ELSE (
echo имя_файла. отсутствует.
)
Приведенный ниже пример не будет работать, поскольку команда del должна заканчиваться новой строкой:

IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. отсутствует
Приведенный ниже пример не будет работать, поскольку команда else должна находиться в той же строке, что и команда if:

IF EXIST имя_файла. del имя_файла.
ELSE echo имя_файла. отсутствует
Если необходимо разместить всю инструкцию в одной строке, можно использовать следующую правильную форму исходной инструкции:

IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. отсутствует
Автор: mbku14
Дата сообщения: 29.05.2010 09:56
Как сранить 2 текстовых файла, если различий будет больше 100 строк, может и 1000.

Всяко разно пробовала командой fc, больше 100 чтрок не выводит. Параметр /lb не работает.

Тут увидела несколько ответов с командой sed.
Что за команда? Чувствую она мне нужна для для полного счастья.
Дайте ссылку на её описание, пожалуйста.
Автор: mugil_cephalus
Дата сообщения: 29.05.2010 10:15
mbku14

Цитата:
Дайте ссылку на её описание,

http://ru.wikipedia.org/wiki/Sed
Автор: SLIDER999
Дата сообщения: 29.05.2010 10:16
Почему в данной конструкции при нажатии НЕ y, n, появляется сообщение "Непредвиденное появление: goto."

Цитата:
@echo off
cls
TITLE Џ®¦ «г©бв , Ї®¤®¦¤ЁвҐ!


cls
ping -n 2 127.0.0.1 >Nul

cls

otNET
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777
if %ERRORLEVEL%==1 goto Office
set /p answer="•®вЁвҐ гбв -®ўЁвм .NET Framework? („  - y | ЌҐв - n) : "
if %answer%==y goto Office
if %answer%==n reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\777 /f
cls

ffice
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888
if %ERRORLEVEL%==1 goto Exit
set /p answer="•®вЁвҐ гбв -®ўЁвм MS Office 2007? („  - y | ЌҐв - n) : "
if %answer%==y goto Exit
if %answer%==n reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888 /f
cls

:Exit
Exit
Автор: mbku14
Дата сообщения: 29.05.2010 13:04
mugil_cephalus

А где взять sed?
Автор: king_stiven
Дата сообщения: 29.05.2010 13:16
SLIDER999

Цитата:
Почему в данной конструкции при нажатии НЕ y, n, появляется сообщение "Непредвиденное появление: goto."

Не надо давать меткам имена. совпадающие с командами

Цитата:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\888
if %ERRORLEVEL%==1 goto Exit


Цитата:
:Exit
Exit

Автор: us0r
Дата сообщения: 29.05.2010 13:45
Вылет без предупреждения.

Код: @echo off
chcp 1251
cls
set /p answer="Choose your destiny? (y|n): "
IF %answer% == "y" (
goto ready
) ELSE (
IF %answer% == "n" (
echo XD
)) ELSE (echo А вы что, собственно, имели ввиду?)
:ready
echo FIGHT!
pause > nul
Автор: ComradG
Дата сообщения: 29.05.2010 14:04
mbku14
Можно как вариант использовать опенсорсные тулзы с sourcefoge.het вроде diff, как вариант в support tools'ах, что на диске с виндой есть парочка достойных тулз (кажись windiff и еще чего-то там), в Windows Server 2k3 Resource Kit лежат несколько тулз - словом, есть где развернуться. Но лично я бы советовал установить PowerShell - хоть и не по теме, зато тамошний командлет для сравнения файлов выявляет более 10k различий и это не предел. Тем паче, что встроенная справка на русском.
Автор: king_stiven
Дата сообщения: 29.05.2010 14:28
us0r
во первых так корректнее
"%answer%"=="y"
во вторых напутано надо так

@echo off
chcp 1251
cls
set /p answer="Choose your destiny? (y|n): "
IF "%answer%"=="y" (
goto ready
) ELSE (
IF "%answer%"== "n" (
echo XD
) ELSE (
echo А вы что, собственно, имели ввиду?
)
)
:ready
echo FIGHT!
pause > nul

Автор: ComradG
Дата сообщения: 29.05.2010 14:29
[b]us0r[/]
Попробуй так:

Код: @echo off
set /p answer="Хочите секса? (y|n): "
if %answer% == y (
goto ready
) else if %answer% == n (
echo Тридцать минут сеска с самим собой
goto end
)
:ready
echo Их есть у меня
:end
Автор: 01MDM
Дата сообщения: 29.05.2010 14:43
us0r
Наверное это будет правильней:

Код:
@echo off
1>nul chcp 1251
setlocal
cls

set "answer=y"
set /p answer="Choose your destiny? (Y|n): "
if /i "%answer%"=="y" (
    goto:ready
) else (
    if /i "%answer%"=="n" (
        echo XD
    ) else (
        echo А вы что, собственно, имели ввиду?
    )
)

goto:eof

:ready
echo FIGHT!
1>nul pause
Автор: ComradG
Дата сообщения: 29.05.2010 15:03
01MDM
Дяд, а зачем при установке переменной нужно брать выражение

Код:
set "answer=y"
Автор: 01MDM
Дата сообщения: 29.05.2010 15:25
ComradG
В кавычки, это чтоб в переменной случайно не затесался концевой пробел.


Цитата:
зачем усложнять батник дополнительным условием в контексте else?

Человек спросил, я ответил, можно конечно вывести `if /i "answer"=="no"` наружу.
Автор: ComradG
Дата сообщения: 29.05.2010 15:46

Цитата:
В кавычки, это чтоб в переменной случайно не затесался концевой пробел.

Тоже верно.
По поводу else я имел ввиду следующее:

Код:
...
) else (
if /i "%answer%"=="n" (
...
Автор: 01MDM
Дата сообщения: 29.05.2010 15:53
ComradG
Можно вообще не вкладывать второй if в первый. Просто переделывал исходный вариант. Можно:

Код:
@echo off
1>nul chcp 1251
setlocal
cls

set "answer=y"
set /p answer="Choose your destiny? (Y|n): "
if /i "%answer%"=="y" goto:ready
if /i "%answer%"=="n" echo XD && goto:eof
echo А вы что, собственно, имели ввиду?
goto:eof

:ready
echo FIGHT!
1>nul pause

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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