Как я могу выполнить несколько команд в командной строке Windows с помощью одной строки?
Например, я хочу выполнить обновление SVN, а затем скопировать все файлы в другое место ...
svn update; copy *.* c:\development\copy\
Это не работает, очевидно. Есть ли символ или разделитель типа ';' выполнить что-то подобное?
windows
command-line
Т. Стоун
источник
источник
&
и&&
работают только в Windows'еcmd.exe
- это не DOS.По крайней мере, в MS-DOS 6.22 я использовал клавишу Ctrl+, Tчтобы получить символ абзаца. Это сработало так же, как &упомянуто Фоши. Однако это будет работать, только если у вас запущен doskey.exe.
источник
Если вы хотите выполнить несколько команд с одной строкой, с которой вы начинаете команды
start
, например, если вы хотите выполнить такую команду:Затем вам нужно сделать это в 2 шага (однострочное решение находится в конце этого ответа).
Сначала запишите команды во временный пакетный файл (в этом случае вы можете использовать
&
или&&
):Обратите внимание, что вам нужно «экранировать» каждый из
"&"s
(амперсандов) с помощью,"^"
чтобы их можно было рассматривать как обычные символы вecho
команде. Кроме того, вы можете создать временный пакетный файл с помощью текстового редактора, такого как Блокнот.Затем используйте
start
для запуска командного файла:Если вы хотите
start
дождаться завершения пакетного файла (послеpause
закрытия), прежде чемstart
завершить, то вам нужно добавить/w
переключатель вstart
команду:Вы можете поместить все это в одну строку и даже удалить (удалить) временный командный файл (
foobar.cmd
):Обратите внимание, что если вы собираетесь удалить временный пакетный файл, вам необходимо запустить его
start
с помощью/w
переключателя, в противном случае временный пакетный файл, вероятно, будет удален, прежде чем он сможет запустить.источник
/w
можно было бы поставить короткий сон перед удалением файла.timeout 2
сделаю это, например.Если вы хотите обернуть первую команду с помощью if, но все равно хотите, чтобы вторая команда выполнялась независимо от этого, тогда вам нужно обернуть if также с помощью cmd / c, например так:
cmd / c, если существует abc. (rd / q abc) и эхо привет
Если вы не ставите префикс if с помощью cmd / c, тогда вся команда становится частью if (чего вы, возможно, не хотите).
источник
(if exist abc. command₁) & command₂
start "" cmd /c "(command₁) & (command₂)"
не разрешены нигде в Интернете, но являются единственным способом связать большинство групповых заявлений. Поздравляю вас.if
но все равно хотите, чтобы вторую команду выполняли независимо, тогда вам нужно обернуть также иif
сcmd /c
», и я ответил, что это можно сделать безcmd /c
. Так почему же вы говорите, что единственный способ связать большинство пакетных операторов - это использоватьcmd /c
? И почему ты бросаешьstart
в смесь?Да использовать
&
!%command1% & %command2%
запускает обе команды%command1% && %command2%
запускает первую команду, если это сработало, запускаю вторую команду%command1% || %command2%
запускает первую команду, если это не удалось запустить команду секундСмотри здесь
источник
&
,&&
и на||
самом деле это не команда, это часть пакета. Не команда.%command%
может выполнить эту строку в качестве команды, увиденной здесьЯ обнаружил, что с помощью «START» исправлено несколько работающих команд (у меня Windows 10 Home). Например:
источник
&
нетstart
!start
?сделать пакетный файл с коротким именем т.е. bat.bat .
и так до 9 строк и сохранить
затем используйте его с двойными кавычками
cmd /c
выполнит каждую команду и завершит работу для следующей строки, не говоря, что это лучше, чем &&, просто это легко.источник