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

Wykonać wiele poleceń w 1 linii w wierszu poleceń Windows?

*Jak mogę wykonać wiele poleceń w wierszu poleceń Windows za pomocą jednej linii? *

Więc na przykład powiedzmy, że chcę wykonać aktualizację SVN, a następnie skopiować wszystkie pliki do innej lokalizacji…

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

To oczywiście nie działa. Czy istnieje jakiś znak lub delimiter jak ‘;’ aby wykonać coś takiego?

Odpowiedzi (6)

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

Tak, jest. Jest to &.

&& wykona komendę 2, gdy zakończy się komenda 1, pod warunkiem, że nie zawiodła.

& wykona się niezależnie od tego.

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

Jeśli chcesz wykonać wiele poleceń w 1 linii, gdzie zaczynasz polecenia od start, na przykład, jeśli chciałeś wykonać polecenie w ten sposób:

start "" netsh dump && pause

Wtedy musisz to zrobić w 2 krokach (rozwiązanie jednolinijkowe jest na końcu tej odpowiedzi).

Najpierw zapisz polecenia do tymczasowego pliku wsadowego (w tym przypadku możesz użyć & lub &&):

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

Zauważ, że musisz “uciec” od każdego z "&"s (ampersands) za pomocą "^", aby były one traktowane jako zwykłe znaki w poleceniu echo   Alternatywnie możesz utworzyć tymczasowy plik wsadowy za pomocą edytora tekstu, takiego jak Notatnik.

Następnie użyj start, aby uruchomić plik wsadowy:

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

Uwaga: Pusta para podwójnych cudzysłowów jest przeznaczona dla argumentu "Title", który będzie widoczny na pasku tytułowym okna poleceń, które start otworzy. Ten argument "Title" jest technicznie opcjonalnym argumentem dla start, ale w rzeczywistości jest on wymagany, jeśli polecenie, które start uruchomi, ma podwójne cudzysłowy. Na przykład, w drugim przykładzie:

start "" "temporary foobar.cmd"

jeśli opuścisz pustą parę cudzysłowów w ten sposób:

start "temporary foobar.cmd"

to start otworzy nowe okno poleceń i użyje jako nowego okna poleceń "temporary foobar.cmd", a nic zostanie wykonane w nowym oknie poleceń).

Jeśli chcesz, aby "Title" czekał na zakończenie pliku wsadowego (po oddaleniu się start), zanim pause zakończy pracę, to musisz dodać przełącznik start do polecenia /w:

start "" /w foobar.cmd

Możesz umieścić to wszystko razem w jednym wierszu i nawet usunąć (skasować) tymczasowy plik wsadowy (start):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Zauważ, że jeśli zamierzasz skasować tymczasowy plik wsadowy, musisz uruchomić foobar.cmd z przełącznikiem start, w przeciwnym razie tymczasowy plik wsadowy zostanie prawdopodobnie skasowany, zanim zdąży się uruchomić.

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

Przynajmniej w MS-DOS 6.22 używałem klawiszy Ctrl+T, aby uzyskać coś w rodzaju symbolu akapitu. Działało to tak samo jak & wspomniane przez Phoshi. Będzie to jednak działać tylko wtedy, gdy masz uruchomiony doskey.exe.

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

Tak użyj &!

%command1% & %command2% uruchamia obie komendy

%command1% && %command2% uruchamia pierwszą komendę, jeśli to zadziałało uruchamia drugą komendę

%command1% || %command2% uruchamia pierwszą komendę, jeśli to zawiodło uruchamia drugą komendę

Zobacz tutaj

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

Odkryłem, że użycie ‘START’ naprawiło działanie wielu poleceń (używam Windows 10 Home). Na przykład:

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

utwórz plik wsadowy o krótkiej nazwie, np. bat.bat.

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

i tak dalej do 9 linii i zapisz

następnie użyj go z podwójnymi cudzysłowami

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

cmd /c uruchomi każdą komendę i zamknie się na następną linię nie mówię, że jest to lepsze niż && tylko, że jest to łatwe.