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


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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

cchameleone



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 12
 
Полезные ссылки
· Из Windows XP Professional Product Documentation:
» Описание Cmd.exe » Command shell overview
» Using batch files » Using batch parameters » Using filters » Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Попов А. Командная строка и сценарии Windows (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
 
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)

Всего записей: 2214 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: eXtreme_Monster, 22:53 04-02-2018
Alexiares

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Помогите пожалуйста описать команды, по учебе надо, что-то уже сделал.
 
Опишите работу c помощью  командного файла Echo off
1.    Опишите работу следующего командного файла:
2.    @ECHO   OFF (отключение вывода на экран протокола выполнения командного файла и самой команды)
3.    IF   $%1= =$   GOTO   NO_PARAM
4.    IF   NOT   EXIST   %1   GOTO   NOT_EXIST
5.    TYPE   %1
6.    PAUSE (Формат: PAUSE При выполнении этой команды на экран выводится сообщение: (Нажмите любую клавишу) Для продолжения работы следует нажать любую клавишу, за исключением Ctrl+C или Ctrl+Break, так как нажатие этих клавиш прекращает выполнение командного файла.)
7.    GOTO   EXIT
8.    :NO_PARAM
9.    ECHO   Отсутствует фактический параметр!
10.    GOTO   EXIT
11.    :NOT_EXIST
12.    ECHO   Файл %1 не найден!
13.    :EXIT
 Данный командный файл выдает на экран содержимое файла, имя которого задается как параметр при запуске batch-файла. При этом анализируется, введен ли параметр. Если параметр не введен, то выдается сообщение и выполнение командного файла прекращается. Вместе с этим определяется, существует ли заданный файл.  

Всего записей: 35 | Зарегистр. 05-12-2012 | Отправлено: 16:03 05-02-2018
RetroRocket



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexiares
%1 - это значение первого параметра, переданного батнику. В вашем случае - имя файла (например, c:\test.txt). А дальше можно и по смыслу понять -

Цитата:
 IF   $%1==$   GOTO   NO_PARAM

если значение $%1 равно $, то имя файла в параметре не задано (параметр %1 пустой), переходим на метку NO_PARAM.

Цитата:
IF   NOT   EXIST   %1   GOTO   NOT_EXIST

если не существует файла, указанного в параметре %1, переходим на метку NOT_EXIST.

Цитата:
TYPE   %1

вывести на экран содержимое файла, указанного в параметре %1.

Цитата:
GOTO   EXIT

переходим на метку EXIT.

Цитата:
 :NO_PARAM

метка NO_PARAM (метки начичаются с символа двоеточие).

Цитата:
ECHO   Отсутствует фактический параметр!

вывести на экран сообщение.

Цитата:
:NOT_EXIST

метка NOT_EXIST.  

Цитата:
ECHO   Файл %1 не найден!

вывести на экран сообщение.

Цитата:
:EXIT

метка EXIT.

Всего записей: 169 | Зарегистр. 02-01-2018 | Отправлено: 10:14 06-02-2018
A27

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема. В следующем коде при истинности условия в операторе If не выполняется команда указанная после &:
 

Код:
Set A=F
For /L %%A in (1,1,999999) do If not exist %A%-%%A.bin Set "Num=%%A" & Goto Stop
:Stop

 
А в следующем варианте выполняется:
 

Код:
Set A=F
For %%A in (1 2 3 4 5) do If not exist %A%-%%A.bin Set "Num=%%A" & Goto Stop
:Stop

 
Как заставить первый вариант работать?

Всего записей: 10 | Зарегистр. 30-03-2017 | Отправлено: 11:19 12-02-2018 | Исправлено: A27, 11:21 12-02-2018
Alexiares

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




Все благодарности в ПМ

Всего записей: 35 | Зарегистр. 05-12-2012 | Отправлено: 11:41 13-02-2018 | Исправлено: gyra, 12:09 13-02-2018
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A27
Она выполняется. Просто немного по-другому...
Просто цикл "for /l" сначала генерирует полный набор согласно скобок, а уже потом начинает выполнение сгенерированного.
А во втором случае проверка выполняется сразу.
 
Таки да, использовать однобуквенную переменную с одним именем в качестве и просто переменной, и переменной цикла - хреновая идея...
 
Проверялось на коде:
Код:
set С=F
For /L %%A in (1,1,1048576) do If not exist %С%-%%A.bin Set "Num=%%A" & Goto Stop1
:Stop1
echo %Num%  
pause
 
For  %%B in (1 2 3 4 5) do If not exist %С%-%%B.bin Set "Num=%%B" & Goto Stop2
:Stop2
echo %Num%  
pause
 
Набор файлов F-*.bin с 1 по 20, пропущен 4-й.
Результат:  


----------
http://www.imho.ws

Всего записей: 882 | Зарегистр. 12-10-2006 | Отправлено: 20:41 13-02-2018 | Исправлено: BorlandIMHO, 20:42 13-02-2018
Masterpiece001

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!  
 
По приходу нового сотрудника  мне приходится создавать папку для сетевого доступа ему на сервере с определенными правами доступа,обычно  я добавляю папку в группу или просто назначаю пользователя на нее и делается это вручную. Хочу это проворачивать с помощью батника, т.е.:
1) Допустим первым батником создаем папку с опр. названием и по опр. пути.
2) Вторым батником добавляю обьект в  определенную группу безопасности.
 
Если такое реально провернуть, то прошу подкинуть советы или примеры. Спасибо!

Всего записей: 9 | Зарегистр. 14-12-2017 | Отправлено: 12:19 15-02-2018 | Исправлено: Masterpiece001, 12:21 15-02-2018
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Masterpiece001
Цитата:
1) Допустим первым батником создаем папку с опр. названием и по опр. пути.
mkdir /?
Цитата:
2) Вторым батником добавляю обьект в  определенную группу безопасности.

net group /? (или net localgroup /?)

Всего записей: 6171 | Зарегистр. 11-03-2002 | Отправлено: 12:40 15-02-2018
Masterpiece001

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

Цитата:
Masterpiece001  
Цитата:
1) Допустим первым батником создаем папку с опр. названием и по опр. пути.
mkdir /?  
Цитата:
2) Вторым батником добавляю обьект в  определенную группу безопасности.
 
net group /? (или net localgroup /?)

Эти команды я знаю-это просто, у меня проблема возникает в том, чтобы это дело сделать универсальней, т.к. в чем смысл мне от батника mkdir в котором прописан один и тот же путь и название папки, у меня название папок разное и пути разные и изменять его каждый раз-не очень.Я стремлюсь к результату в командной строке- "Укажите путь", затем "Укажите название папки" и так же с net group.

Всего записей: 9 | Зарегистр. 14-12-2017 | Отправлено: 13:05 15-02-2018
Victor_VG



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

Цитата:
For /L %%A in (1,1,999999) do If not exist %A%-%%A.bin Set "Num=%%A" & Goto Stop  

на For /L %%A in (1,1,999999) do If not exist %A%-%%A.bin (Set Num=%%A & Goto Stop)
 
иначе у вас логика команды нарушается. У вас в IF конвейер команд и там его всегда надо брать в скобки чтобы он отработался как одна команда. Например как тут в fbld.cmd где следующая по конвейеру команда выполняется только после успешного выполнения предыдущей для чего используется "&&", а одиночный "&" указывает выполнить следующую команду не зависимо от успеха выполнения предыдущей.
 
Masterpiece001
 
@echo
mkdir %1\%2
exit

 
годится?

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 20339 | Зарегистр. 31-07-2002 | Отправлено: 13:06 15-02-2018 | Исправлено: Victor_VG, 13:22 15-02-2018
Masterpiece001

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

Цитата:
@echo  
mkdir %1\%2  
exit  
 
годится?

 
%1 это переменные? Предлагаете задать несколько переменных, чтобы потом  вывести с помощью @echo и выбрать? А то опыт в создание батников практически нулевой и не очень понятно %1.

Всего записей: 9 | Зарегистр. 14-12-2017 | Отправлено: 14:39 15-02-2018 | Исправлено: Masterpiece001, 14:39 15-02-2018
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
%1 первый параметр при запуске, %2 - второй. Типа так запускать
Цитата:
makeuser.cmd UserFolder UserName
- получим папку UserFolder\UserName

Всего записей: 6171 | Зарегистр. 11-03-2002 | Отправлено: 14:50 15-02-2018
wadimuss

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мля .. други, вы чё? это стёб?
создали bat-файл ажно в 3(!!!) строки.
его куда-то поместили
далее его запустили аж в 2(!!!) аргумента
и получили ..
 
а чего проще:
mkdir "где-то созданная папка в кодировке 866"\"еще подпапка"\"ну, допустим еще подпапка в подпапке"
 
ЗЫ.
rem когда коту делать нечего
rem тут запятая
rem он .. лижет
rem давайте решать всё же нормальные проблемы
rem ИМХО
rem однако

Всего записей: 428 | Зарегистр. 24-11-2008 | Отправлено: 19:54 15-02-2018 | Исправлено: wadimuss, 19:57 15-02-2018
A27

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO, ранее у меня никогда не конфликтовали одноименные переменные окружения с переменными цикла.
 
Почему же в первом варианте (с /L) переход на указанную метку осуществляется в конце цикла? Бессмыслица какая-то, ведь по аналогии можно следующей строкой после цикла написать Goto Stop и получится тоже самое.
 
Перед тем как писать на форум я обнаружил, что если вместо "Goto Stop" написать например "Echo %%A", то указанное сообщение появляется с каждой итерацией, почему же Goto не работает?
 
 
Victor_VG, скобки пробовал, по всякому (и до конструкции If и после), но не хочет перекидывать на метку. Причём как я уже писал выше, если вместо "Goto Stop" написать "Echo %%A", то сообщение появляется с каждой итерацией.
 
P.S. Set "Num=%%A" в кавычках обязательно.

Всего записей: 10 | Зарегистр. 30-03-2017 | Отправлено: 09:14 17-02-2018 | Исправлено: A27, 09:19 17-02-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru