Передать в cmd команду из файла

Обновлено: 04.07.2024

Мне нужно передать 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.

Roddog2017, А как передать 2 команды, одну следом за другой, справка говорит использовать && но не выходит. Напишите пример пожалуйста.

Где попытки? Все нормально выходит, если не забывать еще /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"

Копирование текста в/из командной строки¶

По умолчанию копирование текста из командной строки отключено. Чтобы его включить необходимо:

  1. Нажать правой кнопкой мыши на заголовок окна командной строки и выбрать пункт «Свойства»;
  2. Установить галочки напротив «Выделение мышью» и «Быстрая вставка»;

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

В 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» пишем в консоли.

Как переименовать файл через cmd.exe?

Файл «test.txt» будет переименован.

Примечание: Команду «RENAME» можно писать короче, просто «REN» от этого результат не изменится.

Можно сменить расширения у всех файлов в каталоге, например с «txt» на «cmd». Для этого делаем так:

Как переименовать файл через cmd.exe?

Теперь уже в знакомой нам папке «Test_Move» все 3(три) файла приобретут расширение «cmd» за место «txt»

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

Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.

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

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

Для этого пишем так:

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


Для примера взял текст с первого попавшегося забугорного сайта.

В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»

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

Для примера запишем в файл результат команды «DIR» В консоль пишем:

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

Обратите внимание на символ «>» он то и играет здесь главную роль. В итоге появится файл на диске «C:\» с именем «Save.txt» куда будет записан результат выполнения команды.

Если Вам понадобится записать результат команды «DIR» ещё раз, то файл «Save.txt» будет перезаписан и ранние содержимое файла будет удалено!

Что бы этого избежать и просто добавить новый результат не удаляя старый, стоит использовать символ «>» два раза, то есть вот так:

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

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

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

Читайте также: