bat несколько команд в одной строке

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

команда1 & команда2 — Используется для разделения нескольких команд в одной командной строке. В cmd.exe выполняется первая команда, затем вторая команда.

команда1 && команда2 — Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.

команда1 || команда2 — Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).

Пример:

С файла file.txt будет снят атрибут «Скрытый» и если команда attrib при этом не вернёт ошибку, файл будет переименован в file.tmp.

Комментарии

Большое спасибо за статью! Именно то, что мне было нужно.

Офигеть! Полезные советы! Спасибо!

Спасибо большое. Давно искал.

Крутяк, добавлю в закладки.

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

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

Одна вертикальная черта | перенаправляет вывод предыдущей команды следующей. Например type «file1.txt» | find »string1″ ищет в файле строку содержащую «string1» и выводит ее. Этот вывод можно отправить через | на следующую команду. Или, используя пример: (type «file1.txt» | find »string1″ >nul) && (команды если строка найдена) || (команды если строка не найдена)

При одной вертикальной линии команды выполняются всё равно последовательно.

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

Вы можете разбить длинные строки с помощью каретки ^ , пока вы помните, что каретка и новая строка после нее полностью удалены. Итак, если должно быть место, где вы нарушаете линию, укажите пробел. (Подробнее об этом ниже.)

будет записываться как:

Правило для каретки:

Каретка на конце строки добавляет следующую строку, первый символ присоединяемой строки будет экранирован.

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

8192 символов (Windows XP, Windows Vista и Windows 7).

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

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

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

Также можно вставлять строки в строку:

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

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

(Это в основном переписка Wayne answer, но с путаницей вокруг каретки, проясненной. Поэтому я разместил ее как CW. застенчивый об редактировании ответов, но полностью переписывать их кажется неуместным.)

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

Примеры: (все протестированы в Windows XP и Windows 7)

может быть записана как:

(Последнее работает, потому что нет пробелов между xc и ^ , и нет пробелов в начале следующей строки. Поэтому, когда вы удаляете ^ и новую строку, вы получаете. xcopy .)

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

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

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

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

Это не работает. Есть ли символ или разделитель типа ‘;’ выполнить что-то подобное?

7 ответов

&& выполнит команду 2, когда команда 1 будет завершена, если она не сработает.

& будет выполняться независимо.

Как минимум в MS-DOS 6.22 я использовал ключ Ctrl + T , чтобы получить символ абзаца. Это работало так же, как и & amp; , упомянутое Phoshi. Это будет работать, однако, если у вас работает doskey.exe.

Если вы хотите выполнить несколько команд с 1 строкой, где вы, например, запускаете команды с start , если вы хотите выполнить команду следующим образом:

Затем вам нужно сделать это за 2 шага (однострочное решение находится в конце этого ответа).

Сначала напишите команды во временный пакетный файл (в этом случае вы можете использовать & или && ):

Обратите внимание, что вам нужно «избежать» каждого из «&»s (амперсандов) с «^» чтобы они могли рассматриваться как обычные символы в команде echo . Кроме того, вы можете создать временный пакетный файл с помощью текстового редактора, например «Блокнот».

Затем используйте start для запуска командного файла:

Note: The empty pair of double-quote marks is for the «Title» that will be shown in the title-bar of the command window that start will open. This «Title» argument is technically an optional argument to start , but it is actually required, if the command that start will run is double-quoted. For instance, in the second example:

start «» «temporary foobar.cmd»

if you leave out the empty pair of double quote marks like this:

start «temporary foobar.cmd»

then start will open a new command window, and use «temporary foobar.cmd» as the new command window «Title» , and nothing will be executed in the new command window.)

Если вы хотите, чтобы start дождался завершения командного файла (после отклонения pause ), до завершения start , вам нужно добавить переключатель /w в команду start :

Вы можете поместить все это вместе на одну строку и даже удалить (удалить) временный пакетный файл ( foobar.cmd ):

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

Источник: computermaker.info

Понравилась статья? Поделиться с друзьями:
Ок! Компьютер
Добавить комментарий