Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

   

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 9498 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
 
Добавлено:
Извени незнаю что но всё зарвботало как надо
проверял уже на разных батниках как только переименовал и 1 и 2 и hgash и как только всё супер спосибо тебе огромное респект тебе!!!!!!!!!!!!!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 01:42 21-06-2007 | Исправлено: XXXXL, 02:01 21-06-2007
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос такой, как правильно в батнике провести проверку по имени компа?
Т.е чтоб если рабочий комп, выполнялось одно, если домашний, то другое.  
 
Добавлено:
Я это пытаюсь реализовать следущим образом, но работать не хочет. Поправьте, что не так:
 
if "%hostname%"=="Home" echo true
if "%hostname%"=="Work" echo false
 
 
 
 

Всего записей: 260 | Зарегистр. 25-11-2005 | Отправлено: 03:48 21-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fannat

Код:
 
if /i %computername%==home (
....
) else (
...
)
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:59 21-06-2007
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
Спасибо, все заработало.
 
А как это можно было реализовать посрадствам команды hostname? Можно было сделать перенаправление в файл, от туда считывать, сравнивать, и потом удалять его. А попроще? Просто на будущее для себя, как можно задействовать выводы команд для сравнений?

Всего записей: 260 | Зарегистр. 25-11-2005 | Отправлено: 05:14 21-06-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fannat

Цитата:
А попроще?

Можно присвоить вывод переменной:

Код:
 
@echo off
 for /f "tokens=*" %%a in ('hostname') do set name=%%a
  echo %name%
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:49 21-06-2007
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
Спасибо.
 
А можно описать как она выполняется, что значит каждый параметр? Я так понял, что побуквенно считывается вывод команды и так же побуквенно присваивается новой переменной? (что означают ' ' или %%a?)
 
Конечно можете меня отправить читать доки, но чтобы разобраться в данном примере, придется перелистать и перечитать не один десяток страниц, а здесь можно объяснить в нескольких строчках.

Всего записей: 260 | Зарегистр. 25-11-2005 | Отправлено: 09:50 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здрасьте, не подскажите как из батника вырубить службу и потом её вновь запустить?
taskkill не предлагать, если им пользоваться, то система виснет намертво, сначала необходимо вырубить службу, потом убить процесс, произвести некоторые действия, а затем эту службу вновь запустить. Я пробовал добавлять в реестр значения для этой службы командой reg add, но я надеюсь тут знают способ попроще.

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 12:36 21-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RwR

Код:
 
net stop название_службы
net start название_службы
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:58 21-06-2007
Accessor



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RwR
sc.exe

Всего записей: 2861 | Зарегистр. 31-10-2003 | Отправлено: 13:10 21-06-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fannat

Цитата:
 Я так понял, что побуквенно считывается вывод команды

Нет, вывод команды считывается целиком, одной строкой и присваивается переменной name.

Цитата:
что означают ' ' или %%a?)

'' означают, что разбирается вывод команды "hostname", а не файл "hostname"
%%a переменная в которой содержится строка.

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:29 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
sc.exe
 
Что это значит?

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 13:32 21-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fannat

Цитата:
А можно описать как она выполняется, что значит каждый параметр? Я так понял, что побуквенно считывается вывод команды и так же побуквенно присваивается новой переменной? (что означают ' ' или %%a?)

Самым лучшим вариантом, действительно, будет почитать справку по команде for - там очень много опций и параметров.
Для данного примера:
ключ /f говорит нам о том, что мы хотим делать разбор слов (tokens) в строках текста.
"tokens=*" - брать в качестве слова всю строку (без разделителей).
%%а - переменная, которой присваивается найденное значение (в нашем случае - вся строка).
Одинарные кавычки внутри скобок - запустить команду в кавычках и делать разбор выводу этой команды.
do ... - для каждой найденной строки делать то, что написано после do.
 
Добавлено:
Maza Faka
Пока я писал, ты уже ответил

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:32 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ещё один вопросик, можно прочитать из реестра определённое значение? Там должен быть прописан путь к папке установки проги, а затем нужно перевести все действия командной строки в эту папку, как всё это осуществить? И ответьте пожалуйста, что такое sc.exe?

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 14:11 21-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RwR

Цитата:
И ответьте пожалуйста, что такое sc.exe?

SC is a command line program used for communicating with the
NT Service Controller and services.
Консольная утилита Windows для управления службами.
Набери в командной строке sc.exe.

Цитата:
можно прочитать из реестра определённое значение?

Командой reg query ...
Это тоже встроенная в Windows (XP,2003) консольная утилита.
Почитай справку по ней - reg query /?


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:19 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ага, с sc.exe разобрался.
 
Добавлено:
А как потом значение полученное reg query использовать с командой chdir?
Нужно получить значение примерно по адресу такого вида:
HKLM\SOFTWARE\Название Компании\Название Программы\CurrentVersion\Info
из значения "installdir",  а затем командой chdir перейти в папку, которая будет в "installdir".

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 14:20 21-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RwR

Код:
 
@echo off
setlocal
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Название Компании\Название Программы\CurrentVersion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%a"
cd /d "%instdir%"
 

Если названия на русском языке, тогда добавь строчку "chcp 1251>nul", после "@echo off"

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:52 21-06-2007 | Исправлено: Elroir, 14:54 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
setlocal
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\eset\eset security\CurrentVe
rsion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%a"
Непредвиденное появление: %%a.
cd /d "%instdir%"
Системе не удается найти указанный путь.
 

Вот такая штука вылазит, что-то не так делаю?

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 15:54 21-06-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RwR
Это не 2 строки

Код:
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\eset\eset security\CurrentVe
rsion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%a"  
 
а одна

Код:
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\eset\eset security\CurrentVersion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%a"  

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:59 21-06-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
@echo off  
setlocal  
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\eset\eset security\CurrentVersion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%a"  
Непредвиденное появление: %%a.
 

Что это за такое? Объясните. Какое непредвиденное появление? И как проверить, сработала ли команда chdir?

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 16:07 21-06-2007 | Исправлено: RwR, 16:11 21-06-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RwR
Ты эту строку из батник4а запускаешь? или с комм строки?
 
если с комм.строки то должно быть не %%а, а

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:19 21-06-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru