Передать в cmd команду из файла
Мне нужно передать id и пароль в файл cmd (или bat) во время запуска, а не жестко закодировать их в файл.
вот как выглядит командная строка:
еще один полезный совет-использовать %* означает "все". Например:
вышеуказанный пакетный файл будет запущен:
возможно, синтаксис немного неправильный, но это общая идея.
вот как я это делаю.
вот как выглядит командная строка:
%1 применяется к первому параметру %2 (и вот сложная часть) применяется ко второму. Таким образом, можно передать до 9 параметров.
Если вы хотите грамотно обрабатывать отсутствующие параметры, вы можете сделать что-то вроде:
доступ к параметрам пакета может быть простым с %1, %2, . %Или 9 %*,
но только если содержание простое.
нет простого способа для сложного содержимого, такого как "&"^& , так как невозможно получить доступ к %1 без возникновения ошибки.
линии расширяются до
и каждая строка терпит неудачу, как одна из & вне кавычек.
это можно решить с помощью чтения из временного файла a отметил вариант параметр.
фокус в том, чтобы включить echo on и разверните %1 после rem заявление (работает также с %2 .. %* ).
Так даже "&"& можно было бы повторить, не производя ошибки, как это отмечается.
но иметь возможность перенаправлять вывод echo on , вам нужны два for-loops.
затем чтение параметр rem вывод из файла, но осторожно.
FOR / F должен работать с отложенным расширением, иначе содержимое с "!- будут уничтожены.
После удаления дополнительных символов в param1 вы получили это.
и использовать param1 безопасным способом включите отложенное расширение.
да, и не забудьте использовать переменные типа %%1 при использовании if и for и банды.
нет необходимости усложнять ее. Это просто Команда %1 %2 параметры, например,
"пауза" отображает то, что сделал пакетный файл, и ждет, когда вы нажмете любую клавишу. Сохраните это как xx.bat в папке Windows.
чтобы использовать его, введите, например:
этот пакетный файл заботится обо всех необходимых параметрах, таких как копирование только файлов, которые являются более новыми и т. д. Я использовал его еще до Windows. Если вам нравится видеть имена файлов, поскольку они копируются, не включают
Примечание: если "%1"=="" вызовет проблем, если %1 заключен в кавычки сам.
в этом случае используйте IF [%1]==[] или, в NT 4 (SP6) и выше, .
друг недавно спрашивал меня об этом предмете, поэтому я подумал, что опубликую, как я обрабатываю аргументы командной строки в пакетных файлах.
этот метод имеет немного накладных расходов, как вы увидите, но это делает мои пакетные файлы очень легко понять и быстро реализовать. А также поддержка следующих структур:
ShellExecute и cmd.exe
Может быть (скорее всего), подобный вопрос уже обсуждался на этом форуме. Если так, прошу дать.
Передача команд в cmd
Здравствуйте! Подскажите как можно передавать команды в cmd допустим запустил я ее, потом хочу.
Запуск консольных команд cmd.exe
Здравствуйте. Имеется несколько .bat файлов, которыми я иногда пользуюсь. Хочется запихнуть их в.
Поочерёдный ввод команд в cmd.exe
Не могли бы вы подсказать как программно можно сделать поочерёдный ввод команд в одну и ту же cmd.
Где попытки? Все нормально выходит, если не забывать еще /c добавлять перед командой.
-c атрибут для conf , +cont = это string тоже атрибут второй. Вот она должна выполнится, а следом передаться значение cont2 Ты команды можешь написать так, как они из консоли выполняются? Что ты там с кавычками накрутил? По подсветке и то видно, что у тебя && не является частью строки.volvo, C:\Program Files\Conf.exe -c <текст из edit1> .
и сразу следом по выполнении этой команды передать текст из Edit2
Первую строку я передаю легко, а вот следом вторую не получается, уже запутался в кавычках
Добавлено через 7 минут
volvo,
C:\Program Files\Conf.exe -c <cont> по выполнению послать еще
У меня первая строка работает C:\Program Files\Conf.exe -c <cont> . (cont это путь к программе) . И она запускается в той же cmd и просит ввести значение cont2 ( но его я и не могу предать) ((((
Так если я перенесу ковычки то string cont перестанет быть значение Edit1, а станет просто текстом cont (
(XE4), и все отработало, сначала сработала conf.exe, куда были переданы 2 параметра, а потом - отработал dir, который был во втором поле ввода. Что я сделал не так?volvo, О боже, нет o volvo . СПАСИБО ОТ ДУШИ!
Добавлено через 1 час 8 минут
volvo,
volvo, Данный код отработал на УРА, теперь знаю как исполнять две команды друг за другом, но мне к сожалению не подошло. Т.к первая команда ожидает ввода текста из Edit2, а этот текст не вводится до тех пора пока работает 1 команда ( а она как раз и ожидает ввода текста) , если ввести текст вручную , то после ввода как раз и выполнится команда 2 и будет введен текст из Edit2. Существуют ли варианты ввести текс Edit2 сразу после запроса и в момент ожидания ответа от 1 команды?
Получается Edit2 не введется пока не завершится команда №1, а задача ввести Edit2 , в ответ полученный от запуска 1 команды. Выглядит так:
Ввод команды №1 отобразит нам следующее:
Vvedite tekst:
И команда 2 не будет выполнена , до тех пор пока не введем текст. А нас собственно и нужно ввести в VVedite Tekst -- содержимое Edit2
Командная строка позволяет вводить и выполнять команды операционной системы и другие компьютерные команды. Вводя команды, можно выполнять на компьютере различные задачи, не пользуясь мышью или сенсорным вводом.
В разделе перечислены базовые приемы работы в командной строке Windows.
Запуск командной строки¶
Для запуска командной строки воспользуйтесь одним из следующих способов:
- «Пуск → Выполнить» (или клавиши Win+R ) введите cmd и нажмите клавишу Enter ;
- «Пуск → Все программы → Стандартные → Командная строка»;
- «Пуск → Поиск → Командная строка».
Ввод команд¶
Команды вводятся посредством ввода с клавиатуры. Простейшая команда help выводит список всех доступных команд. Также вы можете просмотреть полный перечень команд в статье Список команд Windows ( Windows CMD ).
Для вывода справки по конкретной команде введите help название_команды , например:
Перечень основных команд и примеры их использования приведены в разделе Основные команды данного руководства.
Bat-файлы¶
Используя команды можно написать bat файлы,которые позволяют упрощать и автоматизировать выполнение задач. Более подробно работа с bat файлами рассматривается в статьях:
Автодополнение путей файлов¶
Чтобы не набирать вручную весь путь к файлам используется клавиша Tab на клавиатуре. Она автодополняет названия директорий и файлов, например, чтобы ввести название папки User , достаточно ввести первую букву и нажать клавишу Tab , будет подставлено соответствующее значение.
Если на букву U начинается несколько директорий или файлов, то при каждом последующем нажатии Tab будет происходить перебор названий. Чтобы произвести перебор в обратном порядке, нажимайте Tab c зайжатой клавишей Shift .
Если папка состоит из нескольких слов, разделенных пробелом или из кириллических символов, то весь путь берется в кавычки, например, cd "C:\Documents and Settings"
Копирование текста в/из командной строки¶
По умолчанию копирование текста из командной строки отключено. Чтобы его включить необходимо:
- Нажать правой кнопкой мыши на заголовок окна командной строки и выбрать пункт «Свойства»;
- Установить галочки напротив «Выделение мышью» и «Быстрая вставка»;
Для копирования текста из командной строки достаточно выделить текст и щелкнуть правой кнопкой мыши, выделенный текст скопируется в буфер обмена. Для вставки текста в командную строку также используется нажатие правой кнопкой мыши.
В Windows, как вы получаете доступ к аргументам, передаваемым при запуске командного файла?
Например, допустим, у меня есть программа с именем hello.bat . Когда я вхожу hello -a в командную строку Windows, как я могу сообщить своей программе, что она -a была передана в качестве аргумента?
Как и другие уже говорил, параметры , передаваемые через командную строку можно получить в пакетных файлах с пометкой %1 в %9 . Есть также два других токена, которые вы можете использовать:
- %0 это исполняемый файл (пакетный файл) имя , как указано в командной строке .
- %* это все параметры, указанные в командной строке - это очень полезно, если вы хотите переслать параметры в другую программу.
Есть также много важных методов, о которых нужно знать в дополнение к простому способу доступа к параметрам.
Проверка, был ли передан параметр
Это делается с помощью конструкций like IF "%
1"=="" , что верно, если и только если никакие аргументы не были переданы вообще. Обратите внимание на символ тильды, который приводит к удалению любых окружающих кавычек из значения %1 ; без тильды вы получите неожиданные результаты, если это значение включает двойные кавычки, включая возможность синтаксических ошибок.
Обработка более 9 аргументов (или просто облегчение жизни)
Если вам нужно получить доступ более чем к 9 аргументам, вы должны использовать команду SHIFT . Эта команда сдвигает значения всех аргументов на одно место, так что %0 принимает значение %1 , %1 принимает значение %2 и т. Д. %9 Принимает значение десятого аргумента (если он есть), который не был доступен ни для одной переменной перед вызовом SHIFT (введите команда SHIFT /? для дополнительных параметров).
SHIFT также полезно, когда вы хотите легко обработать параметры, не требуя, чтобы они были представлены в определенном порядке. Например, скрипт может распознавать флаги -a и -b в любом порядке. Хороший способ разбора командной строки в таких случаях
Эта схема позволяет вам анализировать довольно сложные командные строки, не сходя с ума.
Подстановка параметров партии
Для параметров, представляющих имена файлов, оболочка предоставляет множество функций, связанных с работой с файлами, которые недоступны никаким другим способом. Эта функциональность доступна с конструкциями, которые начинаются с %
Например, чтобы получить размер файла, переданного в качестве аргумента, используйте
Чтобы получить путь к каталогу, из которого был запущен командный файл (очень полезно!), Вы можете использовать
Вы можете просмотреть весь спектр этих возможностей, введя CALL /? в командной строке.
Вторая часть поста, в котором будут рассмотрены основные команды для работы с файлами. В первой части было рассказано про то, как удалить файл и каталог используя cmd.exe, если Вы не читали, то советую прочитать. В этом посте будут рассмотрены команды, которые позволят пользователю…
- Перемещать файлы.
- Переименовывать файлы.
- Выводить содержимое файлов в консоль.
- Записывать в файл (txt) результат выполнения команды.
Как всегда, все команды будут представлены Вашему вниманию в сопровождении коротких, но ясных описаниях, а так же будут прилагаться «Пошаговые» скриншоты.
Первым делом, я расскажу, как переместить файл из одной директории в другую.
Как переместить файл через консоль?
Для перемещения файлов используется команда под названием «MOVE». Что бы переместить файл из корня диска «C:\ Move.txt» в папку, в моём случаи это «С:\Test_Move» пишем в консоль:
Результат выполнения команды. Файл «Move.txt» был перемещён в папку «Test_Move»
Если Вам нужно переместить все файлы с конкретным расширением, то в этом случаи стоит писать так:
Для примера я создал 3 файла «Move_1.txt, Move_2.txt и Move_3.txt» Как видно из скриншота выше, все три файла были перемещённых. В этом можно убедится не закрывая консоль.
Для проверки используем команду «DIR»
Если ввести символ «Y» то файл будет перезаписан. При этом содержимое уже имеющегося файла в каталоге «C:\Test_Move\» будут потеряны.
Если ввести символ «N» файл не будет перемещён.
Если ввести «ALL» то будут перемещены и перезаписаны все файлы с конкретным расширением. При этом, также, содержимое файлов в директории «C:\Test_Move\» будут потеряны.
Примечание: За место «ALL» можно просто ввести букву «А» результат будет додже.
Что бы отключить предупреждения используется ключик «/Y»
Теперь все файлы будет перемещены и перезаписаны без всяких предупреждений. Будьте внимательны, можно потерять важную информацию.
Как переименовать файл через cmd.exe?
Для того, чтобы переименовать существующий файл используется команда «RENAME» Я создал файл с именем «test.txt» в корне диска «С:\» что бы его переименовать, скажем в «NEW_Name.txt» пишем в консоли.
Файл «test.txt» будет переименован.
Примечание: Команду «RENAME» можно писать короче, просто «REN» от этого результат не изменится.
Можно сменить расширения у всех файлов в каталоге, например с «txt» на «cmd». Для этого делаем так:
Теперь уже в знакомой нам папке «Test_Move» все 3(три) файла приобретут расширение «cmd» за место «txt»
Как вывести содержимое файла в консоль?
Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.
В общем все просто. Но как быть с файлами большего размера, где много информации? В этак случаи содержимое файла нужно выводить с паузой, чтобы просмотреть его полностью.
Для этого пишем так:
Для примера взял текст с первого попавшегося забугорного сайта.
В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»
Как записать в файл результат выполнения команды?
Для примера запишем в файл результат команды «DIR» В консоль пишем:
Обратите внимание на символ «>» он то и играет здесь главную роль. В итоге появится файл на диске «C:\» с именем «Save.txt» куда будет записан результат выполнения команды.
Если Вам понадобится записать результат команды «DIR» ещё раз, то файл «Save.txt» будет перезаписан и ранние содержимое файла будет удалено!
Что бы этого избежать и просто добавить новый результат не удаляя старый, стоит использовать символ «>» два раза, то есть вот так:
Теперь файл не будет перезаписан, в него просто добавится новый результат в конец файла.
На этом я пожалуй закончу пост, и отправлюсь праздновать первый день рождения сына, ему сегодня исполняется один годик.
Читайте также: