ADSL.Kirov.Ru

Сообщества => Программирование => Тема начата: Aterra от 23 Сентябрь 2012, 12:56:21



Название: Надо научиться писать bat-файлы
Отправлено: Aterra от 23 Сентябрь 2012, 12:56:21
Ребят, подскажите, пожалуйста, толковую книжку или сайт, чтобы научиться писать батники
у меня есть несколько примеров батников, я чисто интуитивно что-то в них понимаю, но требуется разобраться полностью и суметь написать свои батники
спасибо


Название: Re: Надо научиться писать bat-файлы
Отправлено: -= 666 DEVIL 666 =- от 23 Сентябрь 2012, 15:43:24
Да вроде команд то не много.

ASSOC - Отображает или модифицирует связи расширений файлов
AT - Планирует команды и программы для выполнения на компьютере.
ATTRIB - Отображает или изменяет атрибуты файла.
BREAK - Устанавливает или отменяет проверку комбинации [Ctrl+C].
CACLS - Отображает или модифицирует списки управления доступом (ACLs) для файлов.
CALL - Вызывает один *.BAT-файл из другого.
CD - Отображает имя или изменяет имя текущей директории.
CHCP - Отображает или устанавливает номер активной кодовой страницы.
CHDIR - Отображает имя или изменяет имя текущей директории.
CHKDSK - Проверяет диск и отображает отчет о состоянии.
CLS - Очищает экран.
CMD - Стартует новый экземпляр интерпретатора команд Windows NT.
COLOR - Устанавливает цвета по умолчанию для переднего и заднего плана консоли.
COMMAND - Стартует новую копию интерпретатора команд Windows.
COMP - Сравнивает содержимое двух файлов или установки файлов.
COMPACT - Отображает или видоизменяет сжатие файлов на патрициях Windows NT(NTFS).
CONVERT - Конвертирует FAT томов к формату файловой системы Windows NT(NTFS). Вы не можете конвертировать текущий диск.
COPY - Копирует один или больше файлов на другое место.
CTTY - Изменяет терминальное устройство, используемое для управления вашей системой.
DATE - Отображает или устанавливает дату.
DEL - Удаляет один или более файлов.
DEBUG - Выполняет отладку, тестирование программ и редактирование инструментальных средств.
DIR - Отображает список файлов и поддиректорий в директории.
DISKCOMP - Сравнивает содержимое двух дискет.
DISKCOPY - Копирует содержимое одной дискеты на другую.
DOSKEY - Редактирует командные строки, восстанавливает команды Windows и создает макрос.
ECHO - Отображает сообщения, или включает/выключает вывод команд.
EMM386 - Включает/выключает поддержку расширенной памяти EMM386.
ENDLOCAL - Заканчивает локализацию изменений окружающей среды в *.BAT-файле.
ERASE - Удаляет один или более файлов.
EXIT - Прекращает выполнение программы (интерпретатор команд).
EXTRACT - Средство извлечения информации из CAB - файлов.
FC - Сравнивает два файла или установки файлов, и отображает различие между ними.
FIND - Ищет текстовую строку в файле или файлах.
FINDSTR - Поиск строк в файлах.
FOR - Выполняет указанную команду для каждого файла в наборе файлов.
FORMAT - Форматирует диск для использования с Windows.
FTYPE - Отображает или модифицирует типы файлов, используемых в связях расширений.
GOTO - Направляет интерпретатор команд Windows NT к помеченной строке в *.BAT-файле.
GRAFTABL - Способность Windows отображать символы псевдографики, вставленные в графическом режиме.
HELP - Обеспечивает информацию Help для команд Windows.
IF - Выполняет обработку условия в *.BAT-файле.
KEYB - Конфигурирует клавиатуру для заданного языка.
LABEL - Создает, изменяет, или удаляет метку тома на диске.
LOADHIGH(LH) - Загружает программу в верхние адреса памяти.
MD - Создает директорию.
MEM - Отображает величину используемой и свободной памяти в вашей системе.
MKDIR - Создает директорию.
MODE - Конфигурирует системное устройство.
MORE - Отображает вывод одного экрана за раз.
MOVE - Перемещает один или более файлов из одной директории в другую на том же диске.
NETSTAT - Отображает статистики протоколов и текущих сетевых соединений TCP/IP.
NLSFUNC - Загружает информацию, специфическую для страны.
PATH - Отображает или устанавливает путь поиска для выполняемых файлов.
PAUSE - Приостанавливает обработку *.BAT-файла и отображает сообщение.
POPD - Восстанавливает предыдущее значение текущей директории, сохраненной по PUSHD.
PRINT - Печатает текстовый файл.
PROMPT - Изменяет подсказку к командам Windows.
PUSHD - Сохраняет текущую директорию, потом изменяет.
RD - Удаляет директорию.
RECOVER - Восстанавливает читаемую информацию с плохого или дефектного диска.
REM - Записывает комментарии (примечания) в *.BAT-файлы или CONFIG.SYS.
REN - Переименует файл или файлы.
RENAME - Переименует файл или файлы.
REPLACE - Заменяет файлы.
RESTORE - Восстанавливает файлы, которые были архивированы с использованием команды BACKUP.
RMDIR - Удаляет директорию.
SET - Отображает, устанавливает или удаляет переменные среды Windows.
SETLOCAL - Начинает локализацию изменений среды в *.BAT-файле.
SETVER - Устанавливает номер версии MS-DOS, который Windows сообщает программе.
SHIFT - Сдвигает позицию замещаемых параметров в *.BAT-файле.
SMARTDRV - Инсталлирует и конфигурирует утилиту кэширования диска SMART - драйва.
SORT - Сортирует входной поток.
START - Стартует отдельное окно для выполнения указанной программы или команды.
SUBST - Связывает путь с литерой диска.
SYS - Копирует файлы системы MS-DOS и интерпретатор команд на указанный вами диск.
TIME - Отображает или устанавливает системное время.
TITLE - Устанавливает заголовок окна для сеанса .
TREE - Графически отображает структуру директория в драйве или путь.
TYPE - Отображает содержимое текстового файла.
VER - Отображает версию Windows.
VERIFY - Сообщает Windows, проверять ли правильность записи файлов на диск.
VOL - Отображает метку дискового тома и серийный номер.
XCOPY - Копирует файлы и деревья директории.


Название: Re: Надо научиться писать bat-файлы
Отправлено: -= 666 DEVIL 666 =- от 23 Сентябрь 2012, 15:48:12
И еще архивчик Ольге подарю.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Aterra от 23 Сентябрь 2012, 16:57:18
спасибо))))

вопрос по конкретному файлу (текст и как я его поняла)

Файл WRITE_FD:           
@echo off                    //отключение эхо-сопровождения
cls                          //очистка экрана 
IF "%4" neq "" (             //тут сравнивается 5й параметр запуска файла (они нумеруются с 0,
                               где в %0 пишется само  имя файла) с чем-то (вроде как с пустой строкой)
                               но! что за операция neq?
echo %1 %2 %3 %4 >> db.txt   //тут пишем параметры запуска файла в текстовый файл db.txt. судя по всему
                               в командной строке при запуске файла после его имени надо писать фио, год рождения,
                               город и пол какого-нить человека. и после занесения этой строчки в файл переходим
                               на  метку exit, после которой идет pause. и как будто тут программа должна меня
                               спросить: "чего дальше делать-то?"

goto exit
) ELSE goto help             //в противном случае идем на метку help, которая выводит мне формат ввода данных

:help
echo "WRITE_FD <FIO> <YEAR> <CITY> <SEX>";

:exit
pause;

вопросы:
1. скобки подразумевают, что все, что в них написано, должно быть выполнено при истинности условия? т.е. это типа операторных скобок begin-end? я могу скобки поставить сразу перед и сразу после команд, а не одинокие скобки в конце и в начале строк?
2. что за оператор neq? "neq"="not equal"="не равно"?
3. по какому принципу расставляются точки с запятой? в конце файла должна быть точка с запятой или что? в некоторых примерах у меня стоит точка с запятой, а в некоторых - нет
4. почему в условии имя переменной %4 стоит в кавычках, а при выводе в файл без кавычек?


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 23 Сентябрь 2012, 20:07:28
ходи сюда http://rsdn.ru/article/winshell/batanyca.xml
и сюда http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=220


Название: Re: Надо научиться писать bat-файлы
Отправлено: Aterra от 23 Сентябрь 2012, 20:34:42
по первой ссылке я уже ходила. там нет ответа ни на один мой вопрос
вторая ссылка (форум) дает скопище примеров, которые (пусть и не конкретно эти) у меня уже есть
но за помощь спасибо)


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 23 Сентябрь 2012, 21:59:28
http://forum.ru-board.com/topic.cgi?forum=62&topic=0994&start=40#17


Название: Re: Надо научиться писать bat-файлы
Отправлено: hobo от 24 Сентябрь 2012, 06:30:31
1. скобки подразумевают, что все, что в них написано, должно быть выполнено при истинности условия?
2. что за оператор neq? "neq"="not equal"="не равно"?
3. по какому принципу расставляются точки с запятой? в конце файла должна быть точка с запятой или что? в некоторых примерах у меня стоит точка с запятой, а в некоторых - нет
4. почему в условии имя переменной %4 стоит в кавычках, а при выводе в файл без кавычек?

1, 2. См.
Код:
if /?
3. В конце точка с запятой не нужна
4. Чтобы 4-й параметр можно было сравнивать с пустой строкой. При выводе оно будет лишним


Название: Re: Надо научиться писать bat-файлы
Отправлено: Aterra от 24 Сентябрь 2012, 10:37:49
спасибо огромное!)))

4. Чтобы 4-й параметр можно было сравнивать с пустой строкой. При выводе оно будет лишним

т.е. тут получается некоторое отличие от работы со строковыми переменными в других языках?
я считала, что %4 - это имя параметра. и его значение это некоторая строка. а "%4" - это строка из двух символов


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 16:35:04
я считала, что %4 - это имя параметра. и его значение это некоторая строка. а "%4" - это строка из двух символов
нет. Вместо %4 точно так же подставится параметр
если %4 равно например балалайка родная , то при сравнении
Код:
if "%4"="балалайка родная"
а без кавычек
Код:
if %4 = балалайка родная
после пробела будет ошибка


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 24 Сентябрь 2012, 16:49:15
Скрипты - дрянь. Учи нормальный язык.


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 17:08:16
Кузька , перелогинься :)


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 24 Сентябрь 2012, 17:13:43
Кузька , перелогинься :)

Лис, ты чо?! :o Это ж я!


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 17:21:52
А почему советы в духе Кузька-стайл ?  :o


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 24 Сентябрь 2012, 17:25:36
А почему советы в духе Кузька-стайл ?  :o

Да толку от этих bat-файлов... как от козла молока. Простейшие операции. Чуть что посложнее копирования файлов - тут же облом`с.


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 17:35:31
Вы просто не умеете их готовить (с)  ;D
Да и ТС вроде не собиралась на батниках 1С переписывать  ::)


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 24 Сентябрь 2012, 17:57:22
Вы просто не умеете их готовить (с)  ;D

Да брось, тысячи их написаны :) Хотя не могу за себя сказать, что знаю все команды досконально.

Да и ТС вроде не собиралась на батниках 1С переписывать  ::)

Скорее пишет курсовую.


Название: Re: Надо научиться писать bat-файлы
Отправлено: zrche от 24 Сентябрь 2012, 19:42:54
Скрипты - дрянь. Учи нормальный язык.
А какой нормальный?


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 19:53:35
А какой нормальный?
думаешь он сразу спалится и дельфя назовет? :)


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 24 Сентябрь 2012, 20:35:57
А какой нормальный?

толсто


Название: Re: Надо научиться писать bat-файлы
Отправлено: korsak от 24 Сентябрь 2012, 21:19:07
толсто
а ты не парься, а просто предложи если уж заикнулся. Не всегда ведь нужно из пушки по воробьям палить и проекты ваять на дельфях-шарпах на каждый чих


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 25 Сентябрь 2012, 04:52:10
а ты не парься, а просто предложи если уж заикнулся. Не всегда ведь нужно из пушки по воробьям палить и проекты ваять на дельфях-шарпах на каждый чих

Консольные проекты ни в дельфях ни в шарпах вроде никто не отменял.


Название: Re: Надо научиться писать bat-файлы
Отправлено: xxzz от 25 Сентябрь 2012, 06:29:22
Ребят, подскажите, пожалуйста, толковую книжку или сайт, чтобы научиться писать батники
у меня есть несколько примеров батников, я чисто интуитивно что-то в них понимаю, но требуется разобраться полностью и суметь написать свои батники
Разбираться нужно на практике, создавая собственные файлы. Без этого никак.

Цитировать
но! что за операция neq?
Всю жизнь писал так: if not "1"=="2" ...... ;D

Цитировать
1. скобки подразумевают, что все, что в них написано, должно быть выполнено при истинности условия? т.е. это типа операторных скобок begin-end? я могу скобки поставить сразу перед и сразу после команд, а не одинокие скобки в конце и в начале строк?
Да, но есть нюансы в применении скобок.

Цитировать
3. по какому принципу расставляются точки с запятой? в конце файла должна быть точка с запятой или что? в некоторых примерах у меня стоит точка с запятой, а в некоторых - нет
; в файлах не нужны, в конце echo этот символ будет выведен на экран, с командой pause скорее всего проигнорирован

Вы просто не умеете их готовить (с)  ;D
Да и ТС вроде не собиралась на батниках 1С переписывать  ::)
+1 ;D

Да брось, тысячи их написаны :) Хотя не могу за себя сказать, что знаю все команды досконально.
А надо стремиться к совершенству и учить, учить команды ;D


Название: Re: Надо научиться писать bat-файлы
Отправлено: Decoder от 25 Сентябрь 2012, 17:23:04
А надо стремиться к совершенству и учить, учить команды ;D

не смеши


Название: Re: Надо научиться писать bat-файлы
Отправлено: Shire от 25 Сентябрь 2012, 20:19:05
Огромный минус подобных скриптов - в том, что у них интерпретатор вызывается неявно, т.е. нет разделения на строки данных и на код команд, и не выделена явная работа со строками (подстрока/замена/шаблонизация).
В этом случае "интересный символ" в имени файла или параметре, который подставляется в генерируемую команду, может чудесным образом изменить эту команду до неузнаваемости.
Как вариант замены, Microsoft предложила PowerShell с объектными конвейерами, также есть python'овые и lua-шеллы. Но народ настолько привык, что везде лупит cmd- и shell-скрипты.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 15:50:25
Помогите пожалуйста Нужно написать bat файл который бы перезагружал компьютер в безопасном режиме и в безопасном режиме же применялся твик реестра, затем автоматически перезагрузка в обычный режим. Возможно ли такое?


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 11 Май 2016, 16:56:42
Оно? http://forum.oszone.net/thread-297520.html


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 17:12:08
Оно? http://forum.oszone.net/thread-297520.html
Да, оно, читал уже это но все равно не могу разобраться. не могу понять сам принцип этой команды
Код:
Echo Off

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.3\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "10\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt10x
goto warn_and_exit

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 03
goto end

:ver_nt6x
:Run Windows Vista/7/8/8.1 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

:ver_nt10x
:Run Windows 10 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

Echo On

:warn_and_exit
echo Machine OS cannot be determined.

:end

как туда вставить (в какое место) твик реестра?


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 11 Май 2016, 18:01:54
В этом коде первый блок - определение версии windows (для разных версий разный код для выбора варианта), затем идет 3 варианта в зависимости от версии. Строка типа
Код:
bootcfg /raw /a /safeboot:network /id 1
включает следующую загрузку в безопасном режиме.
строка
Код:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
добавляет в автозапуск (в реестре) однократно аналогичную команду, но выключающую безопасный режим. она будет выполнена после следующей загрузки windows.
тебе надо составить аналогичным образом еще одну команду для манипуляции с реестром после перезагрузки.
ну и наконец строка
Код:
SHUTDOWN -r -f -t 03
непосредственно отправляет на перезагрузку.

Осталось решить как сделать перезагрузку из безопасного режима после гарантированного выполнения всех этих команд. Там могут быть хитрости с последовательностью, команда на перезагрузку, если ее добавить так же в реестре, может выполниться раньше, чем остальные добавленные здесь.
Это можно решить, например, через bat-файл в папке автозапуска, который сам себя удалит. Папка "автозагрузка" в пуске выполняется определенно после команд в реестре.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 18:23:25
Код:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
на сколько я понимаю этот код добавляет в реестр новый параметр типа REG_SZ, а как сделать чтобы не добавить а изменить имеющийся параметр REG_DWORD?


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 11 Май 2016, 18:53:39
Не всё так просто :) он добавляет, да, но тебе надо написать такую команду, которая добавит в реестр команду, которая будет изменять нужный кусок реестра :)
А изменение записи делается через то же reg add но с ключом /f (инструкция (http://www.winpedia.ru/content/view/901/58/))
Итак, два этапа.
Первый - так будет выглядеть команда на перезапись параметра:
Код:
REG ADD HKLM\SOFTWARE\тра-ля-ля\ветка /v "параметр" /t REG_DWORD /d число /f
Второй этап: нам надо добавить эту команду в ветку реестра, в которой хранится однократный автозапуск:
Код:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d "REG ADD HKLM\SOFTWARE\тра-ля-ля\ветка /v \"параметр\" /t REG_DWORD /d число /f"
Прошу обратить внимание - кавычки у команды экранированы.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 19:14:54
Код:
REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v "*PackageFeatures" /t REG_DWORD /d 0000003d /f
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d "REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v \"*PackageFeatures\" /t REG_DWORD /d 0000003d /f"
вот так правильно будет?  нет наверно не судьба мне разобраться)))


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 11 Май 2016, 20:55:29
Вроде похоже. единственное что хз слопает ли такую форму представления числа как 0000003d или надо в формате 0x0000003d писать. лучше поэкспериментировать на каких-нибудь неиспользуемых параметрах :)

А, и еще звездочка там не нужна скорей всего. Если в названии параметра этой звездочки нет.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 21:44:58
Вот так попробовать или еще что-то подправить? и в автозагрузку положить батник перезагрузки?

Код:
Echo Off

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.3\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "10\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt10x
goto warn_and_exit

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v "PackageFeatures" /t REG_DWORD /d 0x0000003d /f
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d "REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v \"PackageFeatures\" /t REG_DWORD /d 0x0000003d /f"
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 03

:ver_nt6x
:Run Windows Vista/7/8/8.1 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

:ver_nt10x
:Run Windows 10 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

Echo On

:warn_and_exit
echo Machine OS cannot be determined.

:end



Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 11 Май 2016, 22:48:44
Эммм... Ну если ты заранее знаешь, на какой системе это будет запускаться, то собственно большую часть того кода можно выкинуть.
Я так понимаю в нашем случае под XP? Тогда что-то типа:
Код:
:: Настроить следующую перезагрузку в безопасном режиме
bootcfg /raw /a /safeboot:network /id 1
:: После загрузки выполнить следующие команды автозапуска:
:: Вернуть обратно нормальный режим загрузки (не безопасный)
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
:: Внести требуемые изменения в реестр
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d "REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v \"PackageFeatures\" /t REG_DWORD /d 0000003d /f"
:: Запланировать перезагрузку - с этим этапом могут быть проблемы если он выполнится не последним
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*XXRestart" /t REG_SZ /d "SHUTDOWN -r -f -t 03"
:: Выполнить перезагрузку
SHUTDOWN -r -f -t 03
Можно протестировать - если работать будет правильно, то можно не городить огород с bat-файлами в папке автозагрузки. Значит выполняются команды по мере внесения в реестр или по алфавиту.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 11 Май 2016, 23:13:03
Blackman, спасибо большое! Завтра попробую.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 13 Май 2016, 19:09:33
Попробовал - результат система перезагружается в безопасный режим и снова загружается в обычный, параметры реестра не меняются.
значит перезагрузка выполняется раньше чем все остальные команды.
А на счет бат файла в автозагрузке - где то читал, что в безопасном режиме не запускаются программы из папки автозапуска.
---------------
Да, точно проверил из автозагрузки не запускается файл в безопасном


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 13 Май 2016, 21:18:34
Тогда как вариант запускать из автозапуска в реестре батник, который будет все эти вещи выполнять: и нужные модификации реестра и перезагрузку.
Но только вот я не уверен что ветка RunOnce умеет запускать не PE EXE-файлы...
Экспериментируй! :)

P.S. Сейчас подумал - а никто не мешает запускать батник не напрямую, а через передачу его командному интерпретатору. То есть условно говоря cmd.exe путь\файл.bat


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 13 Май 2016, 21:38:10
P.S. Сейчас подумал - а никто не мешает запускать батник не напрямую, а через передачу его командному интерпретатору. То есть условно говоря cmd.exe путь\файл.bat
Не понял, ты говоришь про батник перезагрузки который хотели в автозагрузку поместить  или который все команды выполняет? Чем это может помочь?
---------
Почему-то даже одна команда
REG ADD HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info /v \"PackageFeatures\" /t REG_DWORD /d 0000003d /f
при запуске её в безопасном не меняет параметр.
0x0000003d тоже пробовал


Название: Re: Надо научиться писать bat-файлы
Отправлено: vvgNovanet от 13 Май 2016, 22:54:57
Кавычки забыл ( пробелы есть без кавычек не пойдёт )
"HKLM\Software\ESET\ESET Security\CurrentVersion\Info"

так должно быть
REG ADD "HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v \"PackageFeatures\" /t REG_DWORD /d 0000003d /f


тоже когда то делал активатор )))

У меня так работало 100%

Это только пример
echo Результат: Активация......
echo Активация панели смены сервера обновлений...
REG ADD "HKLM\Software\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_dword /d 00000001 /f
echo Активация программы.....
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Settings" /v RegistrationType /t REG_dword /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Settings" /v Registration /t REG_dword /d 00000001 /f
echo Отключение контроля за системными обновлениями.....
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000600\Profiles\@My profile" /v WUWarningLevel /t REG_dword /d 00000000 /f
echo Отключение игрового режима.......
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000600\Profiles\@My profile" /v GamerModeFullScreenEnabled /t REG_dword /d 00000000 /f
echo Активация произведена перезагрузите компьютер.....
:Done
del temp.txt
echo.
pause
exit


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 13 Май 2016, 23:31:12
С кавычками тоже не меняет :(
Запускаю в безопасном режиме батник вот с этим содержимым
REG ADD "HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v \"PackageFeatures\" /t REG_DWORD /d 0000003d /f


Название: Re: Надо научиться писать bat-файлы
Отправлено: vvgNovanet от 13 Май 2016, 23:34:25
А если так ???
REG ADD "HKLM\Software\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_dword /d 00000003 /f

Может у тебя винда 64 битная ? пробуй в конец записать /reg:64
REG ADD "HKLM\Software\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_dword /d 00000003 /f/reg:64

https://support.microsoft.com/ru-ru/kb/948698


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 13 Май 2016, 23:47:02
Вот так прокатило 0x0000003d :)


Название: Re: Надо научиться писать bat-файлы
Отправлено: vvgNovanet от 13 Май 2016, 23:50:31
Вот так прокатило 0x0000003d :)
Ну и прекрасно, потом рабочим батничком не забудь поделиться )))


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 14 Май 2016, 00:00:45
попробовал без перезагрузки из безопасного режима вот так:
Код:
:: Настроить следующую перезагрузку в безопасном режиме
bootcfg /raw /a /safeboot:network /id 1
:: После загрузки выполнить следующие команды автозапуска:
:: Вернуть обратно нормальный режим загрузки (не безопасный)
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
:: Внести требуемые изменения в реестр
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d "REG ADD "HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_DWORD /d 0x0000003d /f"
:: Выполнить перезагрузку
SHUTDOWN -r -f -t 03
опять не хочет менять параметр

похоже не выполняется вот эта часть
Код:
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*ResetCounter" /t REG_SZ /d...


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 14 Май 2016, 22:43:50
пока выйду из положения так - находясь в безопасном режиме буду в ручную запускать файл 2.bat

1.bat:
Код:
Echo Off

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.3\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "10\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt10x
goto warn_and_exit

:ver_nt5x
:Run Windows 2000/XP specific commands here
:: Настроить следующую перезагрузку в безопасном режиме
bootcfg /raw /a /safeboot:network /id 1
:: После загрузки выполнить следующие команды автозапуска:
:: Вернуть обратно нормальный режим загрузки (не безопасный)
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
:: Выполнить перезагрузку
SHUTDOWN -r -f -t 30
goto end

:ver_nt6x
:Run Windows Vista/7/8/8.1 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 30
goto end

:ver_nt10x
:Run Windows 10 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 30
goto end

Echo On

:warn_and_exit
echo Machine OS cannot be determined.

:end

2.bat:
Код:
REG ADD "HKLM\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v PackageFeatures /t REG_DWORD /d 0x0000003d /f
SHUTDOWN -r -f -t 30


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 18:41:07
Здравствуйте! Помогите написать batник нужно скопировать файл с удаленного компьютера в локальной сети на мой компьютер.
Как указать локальный диск на котором расположен файл?
Если на компьютере с которого нужно скопировать установлен пароль, то как поступить в таком случае?
В интернете роюсь - ничего не могу найти. То что нахожу все не работает.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 29 Август 2017, 18:48:14
Для начала: а собственно bat-ник где запускаться будет? на твоем компьютере или на удаленном?


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 18:51:04
запускаться будет на моем, а копировать с удаленного.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 29 Август 2017, 19:05:35
Там может быть некоторая разница в зависимости от ОС с менеджментом паролей, но так обычное использование copy с сетевого имени типа \\Other_computer\C\folder\file.ext Естественно, эта папка должна быть расшарена. Либо использовать админские имена дисков типа $D. Можно вообще через net use подключить как сетевой диск с паролем-логином.

По поводу готовых решений: пара ссылок:
http://forum.oszone.net/showthread.php?s=31578e2b3c42f9e373ba9bcfe52b3eda&t=201097&page=2
http://forundex.ru/admin/Skopirovatj-papku-po-seti-so-vsem-soderzhimim-(XCOPY-i-setevoj-disk)-203681
http://www.windowsfaq.ru/content/view/49/57/
http://forum.ixbt.com/topic.cgi?id=22:73333


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 19:14:24
Код:
D:\>copy "\\192.168.1.3\D$\1\1.txt" "C:\1.txt"
Отказано в доступе.

D:\>pause
Для продолжения нажмите любую клавишу . . .

папка расшарена


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 29 Август 2017, 19:28:42
Как имя расшаренной папки? Ты пытаешься достучаться до ресурса D$ со специальным доступом - туда пускают только пользователей с того компьютера. Если ты расшарил папку, то и обращайся к ней по присвоенному имени.

copy "\\192.168.1.3\share_name\1.txt" "C:\1.txt"

Через проводник оттуда копируется нормально?

P.S. Кавычки нужны в основном для имен с пробелами и прочим нестандартом


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 19:38:46
Код:
C:\Users\Дима\Desktop>copy "\\192.168.1.3\name\1.txt" "d:\5.txt"
Скопировано файлов:         1.

C:\Users\Дима\Desktop>pause
Для продолжения нажмите любую клавишу . . .
вот так получилось без указания диска. файл 1.txt на удаленном компьютере находится на диске D.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 29 Август 2017, 19:47:16
Теперь понял о чем вопрос был :)
Нет, в случае расшаренных сетевых ресурсов абсолютно не важен ни диск, на котором они лежат, ни путь. Обращение идет только по имени - какое имя присвоишь, по такому по сети и обращаешься, и не важно что фактически эта папка лежит на 15 уровне вложенности диска j: например.
А встроенные samba-ресурсы типа C$ и D$ позволяют обращаться к нерасшаренным папкам на диске, но только имея админские права на том компьютере.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 20:09:11
А как быть если на удаленном компьютере установлен пароль? Как пароль прописать в бат файле?
Код:
C:\Documents and Settings\Секретарь\Рабочий стол>copy \\192.168.1.2\DataBase\Sch
72003.GDB d:\Sch72003.GDB
Вход в систему не произведен: имя пользователя или пароль не опознаны.

C:\Documents and Settings\Секретарь\Рабочий стол>pause
Для продолжения нажмите любую клавишу . . .

Код:
net use \\192.168.1.2 password /user:ekj
xcopy \\192.168.1.2\DataBase\Sch72003.GDB D:\Sch72003.GDB
Вот так получилось скопировать, но перед этим выходил такой запрос
Код:
Что означает \DataBase\Sch72003.GDB:
имя файла или каталога
(F = файл, D = каталог)?


Название: Re: Надо научиться писать bat-файлы
Отправлено: Blackman от 29 Август 2017, 20:53:09
Мне кажется, копать в сторону команды net, в частности, net use
Там по ссылкам были готовые примеры.

P.S. А, ты уже сам догадался :)
Запрос такой вылазит может быть из-за несоответствия регистра символов? Если в локальной файловой системе они особой роли не играют, то в SMB регистр имени файлов и папок уже может играть значительную роль.
Плюс не обязательно использовать xcopy, обычная copy тут наверняка вполне справится. xcopy там в примерах применяли для копирования папок целиком. Если хочется использовать именно её, то посмотри насчет параметров этой команды. из-за них у тебя может такое вылазить.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 29 Август 2017, 22:19:22
Спасибо Blackman, завтра попробую.


Название: Re: Надо научиться писать bat-файлы
Отправлено: Meys от 07 Сентябрь 2017, 16:46:03
Удалите пожалуйста.


Powered by SMF | SMF © 2006-2020, Simple Machines LLC
© 2006-2020 Разработчики сайта Инициативная группа пользователей.
При технической поддержке ОАО “Ростелеком”.