2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

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

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

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

svn update; copy *.* c:\development\copy\

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

Ответы (6)

107
107
107
2009-10-30 00:24:41 +0000

Да, есть. Это и…

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

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

4
4
4
2014-02-12 06:33:03 +0000

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

start "" netsh dump && pause

Тогда вам нужно выполнить это в два шага (решение из одной строки находится в конце этого ответа).

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

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Обратите внимание, что вам нужно “экранировать” каждый из "&"s (амперсанды) с помощью "^", чтобы их можно было рассматривать как обычные символы в файле echo command.  в качестве альтернативы вы можете создать временный пакетный файл с помощью текстового редактора, например, блокнота.

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

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"

Note: Пустая пара двойных кавычек предназначена для "Title", которая будет показана в строке заголовка командного окна, которое откроется start. Этот аргумент "Title" технически является аргументом optional для start, но на самом деле он равен required, если команда, которую выполнит start, заключена в двойные кавычки. Например, во втором примере:

start "" "temporary foobar.cmd"

если пропустить пустую пару двойных кавычек, как эта:

start "temporary foobar.cmd"

тогда start откроет новое командное окно, и использует "temporary foobar.cmd" в качестве нового командного окна "Title", а nothing будет выполнено в новом командном окне)).

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

start "" /w foobar.cmd

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

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

4
4
4
2009-11-16 07:41:51 +0000

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

0
0
0
2018-07-12 07:51:31 +0000

Да используйте &!

%command1% & %command2% выполняет обе команды

%command1% && %command2% выполняет первую команду, если это сработало, запустите вторую команду

%command1% || %command2% выполняет первую команду, если это не сработало, запустите вторую команду

Смотрите здесь

-1
-1
-1
2016-12-07 17:03:12 +0000

Я обнаружил, что с помощью ‘START’ исправлено несколько команд (я работаю под Windows 10 Home). Например:

START chrome.exe "page.web.com" & timeout 20
-2
-2
-2
2014-10-21 05:01:24 +0000

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

add cmd /c %1 
    cmd /c %2 
rem

и так далее до 9 строк и сохранить

затем использовать его с двойными кавычками

bat "command one" "command two" "command three"

cmd /c запустит каждую команду и выключит для следующей строки, не говоря уже о том, что это лучше, чем && просто, что это легко.

Похожие вопросы

3
19
10
28
8