Командный файл передача параметров

Передача командному файлу параметров

Предположим, мы хотим создать командный файл, который сначала формирует справку с описанием заданной пользователем команды, а потом загружает его для просмотра в блокнот. Фокус в том, чтобы при очередном запуске командного файла каким-то образом сообщить ему, какая именно команда нас интересует на этот раз.

Для решения этой задачи предусмотрен механизм обработки параметров. Работает он довольно просто. Если при запуске командного файла пользователь указал несколько параметров, то в тексте командного файла первый из них мы обозначаем записью %1, второй записью %2, третий записью %3 и т.д. Этими обозначениями мы пользуемся в тексте командного файла примерно так же, как в естественной речи местоимениями.

Текст командного файла, решающего поставленную задачу, приведен наниже. Обратите внимание на команду help. В качестве ее параметра ей передается первый параметр командного файла.

rem Формируем файл с описанием команды,

rem имя которой передано параметром

rem Загружаем файл описания в редактор Блокнот

Предположим, что мы присвоили этому командному файлу имя show-help.bat. Для того чтобы загрузить в блокнот описание команды, например, dir, мы должны ввести команду следующим образом: show-help.bat dir

Следующий командный файл создает каталог с именем, указанным в первом параметре, и записывает в него файл с текстом описания команды, указанной во втором параметре:

rem Пример командного файла с двумя параметрами

rem Создаем каталог с именем, заданным первым параметром

rem Создаем в нем файл с описанием команды,

rem заданной вторым параметром

Что произойдет, если пользователь при запуске этого командного файла укажет не два, а четыре параметра? Ничего страшного, они ничему не помешают, просто не будут использованы. А что будет, если пользователь укажет только первый параметр? Второй параметр окажется пустым. Эффект получится такой: командный файл будет выполнен, но так, как будто на месте записи %2 ничего нет. Команда help сформирует список всех команд и поместит его в файл с пустым именем и расширением.help. Если же пользователь запустить этот файл, не указав ни одного параметра, то при попытке командного процессора выполнить команду md (предназначена для создания каталога), будет выдано сообщение о синтаксической ошибке, поскольку у команды md обязательно должен быть параметр.

Таким образом, использование параметров создает большие возможности, но может существенно усложнить дело. Для того чтобы командный файл всегда работал корректно, необходимо проверять корректность указания пользователем параметров и каким-то образом реагировать на неполные или неверные входные данные.

Переменные. Команда set

Переменной называется поименованное значение. Для объявления переменной и одновременно для присвоения ей значения применяется команда set. Пример записи этой команды показан на следующем листинге.

rem Компилятор хел-пфайлов в формате CHM

set help_compiler= C:\Program Files\HTML Help Workshop\hhc.exe

Для извлечения значения переменной ее имя помещают между двумя знаками процента, как показано ниже.

rem Компилятор хелп-файлов в формате CHM

set help_compiler= C:\Program Files\HTML Help Workshop\hhc.exe

rem Проект хелп-файла модуля «Склад»

rem Проект хелп-файла модуля «Продажи»

rem Компилируем хелп-файлы

Данный пример показывает, в чем польза переменных.

Во-первых, они позволяют вместо длинного фрагмента (например, пути к компилятору хелп-файлов) использовать внутри командного файла синонимичный ему короткий – это удобно.

Во-вторых, они позволяют избежать повторения в тексте командного файла фрагментов, которые в дальнейшем могут меняться.

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

При написании командных файлов часто применяют следующий прием: несколько значений переменных указывают рядом (или перемежая их какими-либо символами или строками), так, чтобы получить некоторое новое осмысленное значение.

rem Путь к компилятору хелп-файлов

set help_compiler=» C:\Program Files\HTML Help Workshop\hhc.exe «

rem Путь к каталогу, в котором находятся проекты хелп-файлов

set project_path=”Z:\ \help”

rem Вызываем компилятор для обработки конкретного проекта,

rem имя которого передаем в первом параметре

Проверка условий и выбор вариантов. Команды if и goto

Команда if позволяет выделять в командном файле группы команд, которые выполняются или не выполняются в зависимости от определенных условий. Для чего это нужно?

Проверка условия — почти необходимая мера при создании командных файлов, использующих параметры. Перед тем, как начинать работу, командный файл, вообще говоря, должен удостовериться в том, что ему передан корректный набор параметров. В противном случае велик риск, что он выполнится неверно или безрезультатно, а пользователю останется только гадать, в чем же проблема. Более того, если командный файл удаляет, перемещает или перезаписывает какие-либо данные, то при некорректных параметрах он может даже нанести ущерб.

На следующем примере показан уже знакомый вам командный файл компиляции хелп-файла. В начало командного файла добавлена проверка первого параметра на непустоту. Обратите внимание на такую особенность синтаксиса: для операции сравнения используется сдвоенный знак равенства. Если первый параметр оказывается непустым, срабатывает команда goto, которая «перебрасывает» командный процессор к указанной метке. В данном случае имя этой метки compile. Обратите внимание, что там, где метка находится, ее имя предваряется двоеточием, а в команде goto нет. При пустом первом параметре командный процессор переходит к следующей строке, которая выдает сообщение об ошибке. А потом к следующей, которая перебрасывает его в самый конец файла к метке с именем finish.

rem Проверяем, задан ли параметр

if not «%1″==»» goto compile

rem Если параметр пуст, выдаем сообщение об ошибке

echo Не указано имя проекта хелп-файла

rem и переходим в конец командного файла

rem к метке finish

rem Это метка с именем compile

rem Ниже расположены команды компиляции

rem Путь к компилятору хелп-файлов

set help_compiler=»c:\Program Files\HTML Help Workshop\hhc.exe»

rem Путь к каталогу, в котором находятся проекты хелп-файлов

set project_path=”Z:\ \help”

rem Вызываем компилятор для обработки конкретного проекта,

rem имя которого передаем в первом параметре

rem Это метка с именем finish

Предложенный способ проверки параметра не самый удачный.

Во-первых, если пользователь по ошибке укажет в качестве параметра имя несуществующего файла, командный файл этим удовлетворится и предпримет попытку компиляции. Более правильный способ — проверить, существует ли такой файл в действительности. Для этого в языке команд MS-DOS предусмотрено специальное слово exist. Поэтому лучше было бы написать: if exist %1.hpj goto compile.

Во-вторых, активное использование команды goto (т.н. безусловного перехода) и меток сильно запутывают код. Технически они ничем не плохи, но отлаживать и сопровождать командный файл, написанный в таком стиле, довольно неудобно. Поэтому программисты издавна считают безусловный переход приемом нежелательным. Ниже показан более правильный, с точки зрения стиля программирования, структурированный вариант, в котором используется конструкция if…else. Работает она так: если условие истинно, выполняются команды в скобках после if, а если ложно, то в скобках после else.

rem Проверяем, задан ли параметр

rem Если параметр пуст, выдаем сообщение об ошибке

echo Такого проекта хелп-файла не существует.

rem Ниже расположены команды компиляции

rem Путь к компилятору хелп-файлов

set help_compiler=» C:\Program Files\HTML Help Workshop\hhc.exe»

rem Путь к каталогу, в котором находятся проекты хелп-файлов

set project_path=”Z:\ \help”

rem Вызываем компилятор для обработки конкретного проекта,

rem имя которого передаем в первом параметре

Источник

Передача параметров командному файлу.

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

echo off echo Это командный файл %0
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3

и запускаем его на выполнение следующей командой:

params.bat FIRST second «two words»

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

Для проверки наличия каких-либо входных параметров, передаваемых командному файлу, можно проверить, является ли значение переменной %1 пустым:

if «%1» EQU «» goto error
.
.
:error
Echo Должен быть задан хотя бы один входной параметр
exit

В командных файлах большого размера трудно обойтись без справочной информации в виде комментариев, для чего используется конструкция

REM пробел текст
Строки, начинающиеся с REM пробел, командным процессором игнорируются.

rem ECHO OFF выключает режим вывода содержания строк командного файла на экран
REM будет выводиться только результат их выполнения.
ECHO OFF
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3

Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*.

При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.

Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:

Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.

При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.

Например, в следующей команде:

параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.

В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.

Таблица 3.1. Операторы для заменяемых параметров

ОператорыОписание%

FnПеременная %n расширяется до полного имени файла%

DnИз переменной %n выделяется только имя диска%

PnИз переменной %n выделяется только путь к файлу%

NnИз переменной %n выделяется только имя файла%

XnИз переменной %n выделяется расширение имени файла%

SnЗначение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла%

$PATH:nПроводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение

Данные синтаксические конструкции можно объединять друг с другом, например:

DPn — из переменной %n выделяется имя диска и путь,

NXn — из переменной %n выделяется имя файла и расширение.

Источник

Как передать параметры командной строки в пакетный файл?

Мне нужно передать id и пароль в файл cmd (или bat) во время запуска, а не жестко закодировать их в файл.

вот как выглядит командная строка:

15 ответов

еще один полезный совет-использовать %* означает «все». Например:

вышеуказанный пакетный файл будет запущен:

возможно, синтаксис немного неправильный, но это общая идея.

вот как я это делаю.

вот как выглядит командная строка:

%1 применяется к первому параметру %2 (и вот сложная часть) применяется ко второму. Таким образом, можно передать до 9 параметров.

Если вы хотите грамотно обрабатывать отсутствующие параметры, вы можете сделать что-то вроде:

линии расширяются до

и каждая строка терпит неудачу, как одна из & вне кавычек.

это можно решить с помощью чтения из временного файла a отметил вариант параметр.

затем чтение параметр rem вывод из файла, но осторожно.
FOR / F должен работать с отложенным расширением, иначе содержимое с «!- будут уничтожены.
После удаления дополнительных символов в param1 вы получили это.

и использовать param1 безопасным способом включите отложенное расширение.

да, и не забудьте использовать переменные типа %%1 при использовании if и for и банды.

нет необходимости усложнять ее. Это просто Команда %1 %2 параметры, например,

«пауза» отображает то, что сделал пакетный файл, и ждет, когда вы нажмете любую клавишу. Сохраните это как xx.bat в папке Windows.

чтобы использовать его, введите, например:

этот пакетный файл заботится обо всех необходимых параметрах, таких как копирование только файлов, которые являются более новыми и т. д. Я использовал его еще до Windows. Если вам нравится видеть имена файлов, поскольку они копируются, не включают

Примечание: если «%1″==»» вызовет проблем, если %1 заключен в кавычки сам.

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

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

давайте оставим это простым.

вот 3 вызова из командной строки.

это повторяет параметры пакета ( % * ) либо они цитируются, либо нет, а затем повторяет каждый параметр.

например, дана следующая команда:

myscript.bat сможет использовать переменные после вызова функции:

ограничения

изменений

для ссылки на переменную set в командной строке вам нужно будет использовать » %a%», например:

Примечание: это работает для Windows 7 pro.

создать новый пакетный файл (пример: openclass.bat) и напишите эту строку в файле:

затем поместите пакетный файл, скажем, в папку system32, перейдите в файл класса Java, щелкните правой кнопкой мыши, Свойства, откройте. затем найдите свой пакетный файл, выберите его, и все.

это работает для меня.

PS: Я не могу найти способ закрыть окно cmd, когда я закрываю класс Java. Пока.

простое решение(хотя вопрос старый)

где YourLocalPath-текущий путь к каталогу.

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

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

чтобы написать встроенный код: см. другие ответы.

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

другими словами, это выглядит так:

1 не обновляйтесь, потому что они определяются, когда IF разбирается. Вы могли бы использовать %

Источник

Командный файл передача параметров

Общие сведения о командных файлах.

или по конкретной команде:

Для вывода потока данных команды HELP в файл help.txt командная строка будет следующей:

Для вывода справки по команде GOTO в файл goto.txt:

HELP GOTO > goto.txt

Использование переменных окружения.

переменная Имя переменной среды.

строка Строка символов, присваиваемая указанной переменной.

Например, командная строка

добавит переменную myname, принимающую значение Vasya.

выведет на экран слово time, а команда

выведет на экран значение переменной time, принимающей значение текущего времени.

А командная строка

добавит в путь поиска исполняемых программ, описываемый значением переменной PATH каталог C:\myprog

Выполнение команды SET без параметров вызывают выдачу текущих значений переменных на экран, в виде:

OS=Windows_NT- тип ОС

Значение некоторых переменных по команде SET не выдаются. Это переменные, значения которых динамически изменяются :

Для просмотра значения переменной можно использовать командную строку:

Входные параметры для командного файла.

Существует возможность передать командному файлу параметры командной строки и использовать их значения в операторах самого командного файла.

Создаем файл parm.bat следующего содержания:

echo Первый параметр=%1

echo Второй параметр=%2

echo Третий параметр = %3

и запускаем его на выполнение следующей командой:

parm.bat FIRST second “two words”

rem ECHO OFF выключает режим вывода содержания строк командного файла на экран

REM будет выводиться только результат их выполнения.

echo Первый параметр=%1

echo Второй параметр=%2

echo Третий параметр = %3

Попробуйте ECHO OFF заменить на @ECHO OFF – результат говорит сам за себя. Строка, которая выключает режим вывода, перестала выдаваться на экран.

В командных файлах можно использовать команды условного перехода, меняющие логику их работы в зависимости от выполнения определенных условий. Для иллюстрации приемов использования условных переходов создадим командный файл, целью которого будет присвоение заранее определенной буквы диска для съемных носителей, в качестве которых будут использоваться флэш-диски. Условия таковы – есть 2 флэш-диска, один из которых должен быть виден в проводнике как диск X: а второй – как диск Y: независимо от того, в какой порт USB они подключены. Будем считать, что реальные диски могут быть подключены как F: или G: Опознавание дисков будем выполнять по наличию файла с определенным именем (лучше такой файл сделать скрытым в корневом каталоге и назвать его как-нибудь необычно):

Flashd1.let – на первом диске

Flashd2.let – на втором

Т.е. задача командного файла заключается в том, чтобы проверить наличие на сменных дисках F: и G: файлов Flashd1.let или Flashd2.let и, в зависимости от того, какой из них присутствует, присвоить диску букву X: или Y:

Для поиска файла на диске используем команду IF EXIST :

IF EXIST имя_файла команда

Создаем командный файл setXY.bat со следующими строками:

IF EXIST G:\flashd1.let SUBST X: G:\

IF EXIST F:\flashd1.let SUBST X: F:\

IF EXIST G:\flashd2.let SUBST Y: G:\

IF EXIST F:\flashd2.let SUBST Y: F:\

После выполнения такого файла у вас появятся диски X: и Y: Но если такой файл выполнить повторно, команда SUBST выдаст сообщение об ошибке – ведь диски X: и Y: уже существуют.

Метка должна находиться в отдельной строке и начинаться с двоеточия. Сделаем изменения в нашем командном файле, чтобы не возникало сообщений об ошибке:

IF NOT EXIST X:\ GOTO SETX

IF EXIST G:\flashd1.let SUBST X: G:\

IF EXIST F:\flashd1.let SUBST X: F:\

REM если Y: существует – завершим командный файл.

IF EXIST Y:\ GOTO EXIT

IF EXIST G:\flashd2.let SUBST Y: G:\

IF EXIST F:\flashd2.let SUBST Y: F:\

REM выход из командного файла

При выполнении test.bat будет выдано на экран сообщение

и управление получит 1.bat с командой pause. После начатия клавиши на клавиатуре управление получит командная строка “ECHO Возврат.” и на экран будет выдано

Выйти из зацикливания командного файла можно по нажатию комбинации CTRL-Break. Возможно использование команды CALL для вызова процедуры внутри командного файла. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:
.
call :proc1
.
:proc1
.
exit
.

В Windows нет специальной команды для создания файла, но без нее можно легко обойтись несколькими способами:

Копирование с консоли в файл

COPY CON myfile.txt

При выполнении этой команды данные с клавиатуры (устройство CON) будут заноситься в файл myfile.txt. Нажатие клавиши F6 или комбинации CTRL-Z завершит вывод.

При выполнении этой команды будет создан файл myfile.txt, содержащий символ “1”

Комбинация перенаправления ввода и вывода:

COPY CON > myfile.txt nul в файл.
copy nul myfile.txt

Поместите этот командный файл в системный каталог (C:\windows\system32 или любой другой, имеющийся в путях поиска, задаваемых PATH).

Вот вам и команда nf для создания пустого файла в командной строке.

Присвоение съемному диску одной и той же буквы.

d0. Создаем командный файл следующего содержания:
@echo off
subst X: %

Создание поколений архивов по датам и времени.

Таким образом, для решения задачи нужно правильно создать имена и пути для RAR. Для чего воспользуемся следующими факторами:

Создаем каталог на диске C:, имя которого = текущая дата из переменной VDATE:

MD C:\%VDATE%
После выполнения этой команды на диске C: будет создан каталог с именем 20.01.2005

0,-3%
Теперь VTIME = 14:30:59, но знак » : » в имени файла использовать нельзя, поэтому заменим его на точку.
set VTIME=%VTIME::=.%
Переменная VTIME примет значение 14.30.59 Для имени файла сойдет.

Теперь можно создать командный файл с содержимым:

3%
md c:\%VDATE%
set VTIME=%time:

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

Создание архивов с использованием переменных профиля пользователя.

Этот командный файл создает архивы содержимого папки «Мои Документы» пользователей Win2K/XP, размещая их в каталоги
C:\ARHIV\Мои документы\Имя пользователя\Дата\время

Используются переменные USERPROFILE, USERNAME, WINDIR, поэтому в WIN9X этот командный файл работать не будет. (Хотя, при желании вы можете вставить в autoexec.bat команды для установки значений этих переменных и использовать его в однопользовательском варианте практически без изменений). Содержимое командного файла снабжено комментариями и не должно вызывать особых затруднений, если вы разобрались с предыдущим примером:

0,-5%
GOTO SetFileName
:Win2K
set vdate=%DATE:

Выполнение команд по расписанию.

AT [\\имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]]

AT [\\имя_компьютера] время [/INTERACTIVE]

[ /EVERY:день[. ] | /NEXT:день[. ]] «команда»

\\имя_компьютера Имя удаленного компьютера. Если этот параметр опущен,

используется локальный компьютер.

/delete Отмена запланированной задачи. Если код задачи опущен,

отменяются все задачи, запланированные для указанного

/yes Отмена запроса на подтверждение при отмене всех

время Время запуска команды.

/interactive Разрешение взаимодействия задачи с пользователем,

работающим на компьютере во время запуска задачи. Задачи, запущенные без этого ключа невидимы для пользователя компьютера.

/every:день[. ] Запуск задачи осуществляется по указанным дням недели или

месяца. Если дата опущена, используется текущий день

/next:день[. ] Задача будет запущена в следующий указанный день недели

(например в следующий четверг). Если дата опущена,

используется текущий день месяца.

«команда» Команда или имя пакетного файла.

AT 13:50 net.exe send * Пора пить кофе

AT 17:50 net.exe send User Пора домой

AT \\SERVER 13:45 net.exe send Нужно перезагрузить сервер

— Просмотр списка запланированных задач:

— Удаление уже спланированных задач:

AT 3 /DELETE – удаление задачи с номером 3

AT /DELETE /YES – удаление всех задач

Остановка и запуск системных сервисов.

Для остановки и запуска служб Win2K/XP из командной строки используется команда NET.EXE

net stop «DNS-клиент»

net start «DNS-клиент»

То же, с использованием короткого имени:

net start Dnscache

Для управления службами гораздо удобнее воспользоваться утилитой PsService.exe из утилит PsTools Утилита не требует установки и работает в любой OS Windows. Кроме запуска и остановки службы, позволяет выполнить поиск конкретной службы на компьютерах локальной сети, опросить состояние и конфигурацию службы, изменить тип запуска, приостановить службу, продолжить, перезапустить.

Этот простенький командный файл выдаст на экран значение переменной ERRORLEVEL по конкретной командной строке. Вначале выполняется проверка на наличие хотя бы одного входного параметра, и если ничего не задано, выдается сообщение об ошибке и происходит завершение по exit. Если же хотя бы один параметр задан, то входные параметры считаются командной строкой и выполняются, а значение ERRORLEVEL выдается с помощью команды ECHO. Содержимое файла (я назвал его echoEL.bat):

@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать командную строку для определения ERRORLEVEL
exit
:PARMOK
%1 %2 %3 %4 %5 %6 %7 %8
ECHO %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL=%ERRORLEVEL%

Примеры запуска:
echoEL.bat NET SHARE
— будет выполнена команда NET SHARE (выдать список разделяемых сетевых ресурсов) и выдан код ERRORLEVEL
echoEL.bat NET SHARE X»=»C:\
— будет выполнена команда NET SHARE X:=C:\ (создать разделяемый сетевой ресурс с именем X, и путем в корневой каталог диска C:) Обратите внимание на то, что символ = заключен в двойные кавычки.
Перечисленные выше варианты задают корректную командную строку. Но попробуйте задать неверный параметр для NET.EXE или вообще несуществующую команду и вы увидите, какое значение примет ERRORLEVEL. И УЧТИТЕ, что командная строка реально ВЫПОЛНЯЕТСЯ и, например, вариант «echoEL.bat format A:» запустит форматирование дискеты в дисководе A:.

Диалог с пользователем

@ECHO OFF
:CHOICE
CHOICE /C:1230 /T:0,10 Ваш вариант
IF %ERRORLEVEL% EQU 4 GOTO EXIT
echo Ваш выбор=%ERRORLEVEL%
GOTO CHOICE
:EXIT

Теперь, используя CHOICE вы можете создавать командные файлы, логика работы которых может определяться пользователем.

Задержки в командных файлах

Когда-то, еще в DOS, для организации ожидания в командном файле использовалась удобная команда SLEEP, но затем она почему-то перекочевала из стандартного установочного набора Windows в дополнительный Resource Kit. Можно просто скопировать его оттуда в каталог \system32 и использовать в ваших командных файлах.

Если же Resource Kit нет под рукой, можно воспользоваться ранее рассмотренной командой CHOISE без вывода текста и с автоматическим формированием ответа через nn секунд (1-99):

Поиск компьютеров с запущенным приложением

В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist.exe и PSkill.exe должны быть доступны в путях поиска исполняемых файлов, например в каталоге WINDOWS. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам. И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие имя пользователя и пароль.

Поиск компьютеров с запущенным приложением по списку

В предыдущем примере использовался прямой перебор IP-адресов компьютеров в локальной сети, что не всегда удобно, поскольку в процедуру опроса оказываются вовлечены и выключенные компьютеры. Решим задачу другим способом. Создадим текстовый файл со списком компьютеров и опросим их по этому списку.
Список можно получить из сетевого окружения с использованием команды:
net.exe view > comps.txt
После выполнения такой команды файл comps.txt будет содержать список следующего вида:

Обрабатывать содержимое этого текстового файла будем с помощью команды FOR с ключом /F:

FOR /F [«ключи»] %переменная IN (имя файла) DO команда [параметры]

Окончательный вид команды:

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

Предыдущий пример натолкнул меня на мысль сделать пакетный файл для быстрого выключения всех компьютеров в сети. Выключение производится утилитой PsShutdown.exe (описание в статье «Утилиты пакета PSTools»). Как и в предыдущем примере, сначала создается файл со списком компьютеров на основе сетевого окружения, а затем выполняется их поочередное выключение, при условии, что компьютер не свой (иначе он может выключиться до окончания выполнения командного файла). Содержимое файла:

Работа с оконными приложениями.

start /MAX notepad.exe
start «This is CMD.EXE» /MIN cmd.exe
net send %COMPUTERNAME% NOTEPAD and CMD running.

После выполнения этого командного файла вы увидите стартовавшие, в развернутом окне (ключ /MAX) блокнот, в свернутом окне (ключ /MIN) командный процессор CMD.EXE и окно с сообщением net.exe. Стандартный заголовок окна cmd.exe заменен на текст «This is CMD.EXE». Обратите внимание на то что заголовок окна можно опускать, но особенность обработки входных параметров утилитой start.exe может привести к неожиданным результатам при попытке запуска программы, имя или путь которой содержит пробел(ы). Например при попытке выполнить следующую команду:
start «C:\Program Files\FAR\FAR.EXE»
Из-за наличия пробела в пути к исполняемому файлу, строка для запуска FAR.EXE должна быть заключена в двойные кавычки, однако формат входных параметров для start.exe предполагает наличие заголовка окна, также заключаемого в двойные кавычки, в результате чего «C:\Program Files\FAR\FAR.EXE» интерпретируется не как исполняемая программа, а как заголовок окна. Для того, чтобы подобного не случилось нужно использовать любой, пусть даже пустой, заголовок:
start «» «C:\Program Files\FAR\FAR.EXE»

Если вам все же потребуется расширенное управление окнами приложений, придется воспользоваться сторонним программным обеспечением, например, CMDOW Скачать

Пример командного файла, закрывающего окна Проводника Интернет (IEXPLORE.EXE):

@echo off
:M1
for /f «tokens=1-2,8» %%a in (‘cmdow’) do (
if /i «%%c»==»IEXPLORE» if «%%b»==»1» cmdow %%a /END > nul
)
goto M1

и если каталог D:\SCRIPTS не прописан в путях поиска (переменная PATH ) то модуль MYPROG.EXE может быть найден и выполнен только если текущим каталогом является D:\SCRIPTS. Но если вы укажете полный путь к myprog.exe

То программа будет найдена и выполнена в любом случае.

Rem Сменим текущий диск

Rem перейдем в каталог SCRIPTS

Прием со сменой каталога наиболее универсален и, как правило всегда срабатывает.

Старайтесь использовать команды Setlocal и Endlocal, чтобы не оставлять мусор из переменных, созданных или модифицированных командным файлом.

Командные файлы удобно использовать для выполнения каких-либо действий при регистрации пользователя в домене. Делается это с помощью вкладки «Profile» свойств пользователя домена.

Командный файл передача параметров. Смотреть фото Командный файл передача параметров. Смотреть картинку Командный файл передача параметров. Картинка про Командный файл передача параметров. Фото Командный файл передача параметров

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *