Jak mogę wykonać wiele poleceń w linii poleceń Windows za pomocą tylko jednego wiersza?
Powiedzmy na przykład, że chcę wykonać aktualizację SVN, a następnie skopiować wszystkie pliki w inne miejsce ...
svn update; copy *.* c:\development\copy\
To oczywiście nie działa. Czy istnieje znak lub separator podobny do „;” wykonać coś takiego?
windows
command-line
T. Stone
źródło
źródło
&
i&&
działa tylko w systemie Windows ”cmd.exe
- który nie jest systemem DOS.Przynajmniej w MS-DOS 6.22 użyłem klawisza Ctrl+, Taby uzyskać rodzaj symbolu akapitu. &Działa to tak jak wspomniany przez Phoshi. Działa to jednak tylko wtedy, gdy masz doskey.exe.
źródło
Jeśli chcesz wykonać wiele poleceń z 1 linią, gdzie je uruchamiasz
start
, na przykład, jeśli chcesz wykonać takie polecenie:Następnie musisz to zrobić w 2 krokach (rozwiązanie na jednej linii znajduje się na końcu tej odpowiedzi).
Najpierw napisz polecenia do tymczasowego pliku wsadowego (w tym przypadku możesz użyć
&
lub&&
):Zauważ, że musisz „uciec” każdego z
"&"s
(ampersands) za pomocą,"^"
aby umożliwić traktowanie ich jako zwykłych znaków wecho
poleceniu. Alternatywnie możesz utworzyć tymczasowy plik wsadowy za pomocą edytora tekstu, takiego jak Notatnik.Następnie użyj,
start
aby uruchomić plik wsadowy:Jeśli chcesz
start
poczekać na zakończenie pliku wsadowego (po jegopause
odrzuceniu), zanimstart
zakończy się, musisz dodać/w
przełącznik dostart
polecenia:Możesz połączyć to wszystko w jednym wierszu, a nawet usunąć (usunąć) tymczasowy plik wsadowy (
foobar.cmd
):Pamiętaj, że jeśli zamierzasz usunąć tymczasowy plik wsadowy, musisz uruchomić go
start
za pomocą/w
przełącznika, w przeciwnym razie tymczasowy plik wsadowy zostanie prawdopodobnie usunięty, zanim będzie miał szansę na uruchomienie.źródło
/w
można położyć krótki sen przed usunięciem pliku.timeout 2
zrobi to na przykład.Jeśli chcesz owinąć pierwsze polecenie if, ale nadal chcesz, aby drugie polecenie zostało wykonane niezależnie od tego, wtedy musisz owinąć if za pomocą cmd / c, a także w ten sposób:
cmd / c, jeśli istnieją abc. (rd / q abc) i echo witaj
Jeśli nie użyjesz if z cmd / c, całe polecenie stanie się częścią if (czego możesz nie chcieć).
źródło
(if exist abc. command₁) & command₂
start "" cmd /c "(command₁) & (command₂)"
nie ma na nie odpowiedzi w żadnym miejscu w sieci, ale jest to jedyny sposób na połączenie większości instrukcji wsadowych. Gratulacje dla ciebie.if
, ale nadal jak drugiego polecenia do wykonania niezależnie potem to trzeba owinąćif
zcmd /c
tak dobrze”, a ja odpowiedziałem w sposób robi to bezcmd /c
. Dlaczego więc mówisz, że jedynym sposobem na połączenie większości instrukcji wsadowych jest użyciecmd /c
? I dlaczego rzucaszstart
się w miks?Tak, użyj
&
!%command1% & %command2%
uruchamia oba polecenia%command1% && %command2%
uruchamia pierwsze polecenie, jeśli to zadziałało, uruchom drugie polecenie%command1% || %command2%
uruchamia pierwsze polecenie, jeśli to się nie powiedzie, uruchom polecenie sekundyZobacz tutaj
źródło
&
,&&
i||
tak naprawdę nie są poleceniem, to część partii. To nie jest polecenie.%command%
może wykonać ten ciąg jako polecenie, widoczne tutajOdkryłem, że użycie „START” naprawiło działanie wielu poleceń (korzystam z systemu Windows 10 Home). Na przykład:
źródło
&
, nie jeststart
!start
?utwórz plik wsadowy o krótkiej nazwie, np . bat.bat .
i tak dalej do 9 linii i oszczędzaj
następnie użyj go z podwójnymi cudzysłowami
cmd /c
uruchomi każde polecenie i zamknie się w następnym wierszu, nie mówiąc, że jest to lepsze niż && tylko dlatego, że jest łatwe.źródło