Plik BAT: otwórz nowe okno cmd i uruchom w nim polecenie


Próbuję otworzyć nowe okno poleceń w pliku BAT:
start %windir%\system32\cmd.exe

Po otwarciu chciałbym wykonać polecenie BAT w nowym oknie:
echo "test in new window"

Jak mogę to zrobić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Być może już znalazłeś odpowiedź, ponieważ to było jakiś czas temu, kiedy pytałeś. Ale ja próbowałem zrobić coś podobnego podczas kodowania ror. Chciałem uruchomić „serwer railsowy” w nowym oknie cmd, aby nie musieć otwierać nowego cmd i ponownie znajdować ścieżki.
Nauczyłem się używać przełącznika K w następujący sposób:
start cmd/k echo Hello, World!

start zanim "cmd" otworzy aplikację w nowym oknie, a "/ K" uruchomi "echo Hello, World!" po uruchomieniu nowego polecenia cmd.
Możesz także użyć przełącznika/C do czegoś takiego.
start cmd/C pause

Następnie „wstrzyma”, ale zamknie okno po wykonaniu polecenia. W takim przypadku po naciśnięciu przycisku. Znalazłem to przydatne dla "serwera railsowego", a kiedy zamykam mój serwer deweloperski, nie muszę potem zamykać okna.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj następujących w pliku wsadowym:
start cmd.exe/k "more-batch-commands-here"

lub
start cmd.exe/c "more-batch-commands-here"
/ c wykonuje polecenie
określony przez ciąg, a następnie
skwitowany

/ k robi
polecenie wskazane przez linię, ale
pozostaje

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją cmd.exe z
cmd/?
.
Prawidłowe utworzenie wiersza poleceń staje się trochę trudne ze spacjami w argumentach. Zobacz przykłady poniżej. Zwróć uwagę na użycie zagnieżdżonych podwójnych cudzysłowów w niektórych przykładach.

Przykłady

:
Uruchom program i podaj parametr filename:
CMD/c write.exe c:\docs\sample.txt
Uruchom program i przekaż długą nazwę pliku:
CMD/c write.exe "c:\sample documents\sample.txt"
Spacje w ścieżce programu:
CMD/c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Spacje w ścieżce programu + parametry:
CMD/c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD/k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
Uruchamianie demo1 i demo2:
CMD/c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

Źródło:
http://ss64.com/nt/cmd.html
http://ss64.com/nt/cmd.html
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To nie jest takie proste.
Najlepiej umieścić część skryptu, którą chcesz wykonać w „nowym oknie”, tak aby znajdowała się w oddzielnym pliku .bat. Może to być niepraktyczne, jeśli na przykład potrzebujesz dużej ilości stanów z reszty skryptu (zmienne itp.). Jedną z opcji jest przekazanie dowolnych potrzebnych wartości (takich jak katalog do pracy) w pliku wsadowym:
start cmd.exe stuff.bat %this_dir%

Jeśli masz dużą liczbę stanów do przesłania, możesz rozważyć utworzenie pliku wsadowego w czasie wykonywania:
set foo=Hello, World
set list_me=%userprofile%set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foodel/q/f "%tmp%"echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"start cmd.exe "%tmp%"del/q/f "%tmp%"

Oczywiście jest to trywialny przykład.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pomogły mi powyższe odpowiedzi. Ale trzeba było się jeszcze czegoś nauczyć. Oto przykładowy skrypt, którego używam do uruchomienia 3 procesów tworzenia stron internetowych. Powoduje to, że 3 okna pozostają otwarte, ponieważ muszą działać w sposób ciągły.
Mongo jest globalnie dodawane do mojej ścieżki, więc nie potrzebuję płyty CD, tak jak w przypadku pozostałych dwóch programów. Oczywiście ścieżka do twoich plików będzie inna, ale miejmy nadzieję, że to pomoże.
:: Start MongoDB
start cmd.exe/k "mongod":: cd app directory, and start it
cd my-app
start cmd.exe/k "npm run dev":: cd to api server, and start that
cd ../my-app-api
start cmd.exe/k "npm run dev"
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dziękujemy wszystkim na Stack Overflow; to rozwiązanie rozwiązuje powyższe pytanie, ale rozwija się, aby automatycznie uruchamiać te zadania:
  • Chcę uruchomić mój serwer rails
  • Biegać prowizje: robotnik dla mojego klejnotu delayed_job
  • i otwórz domyślną przeglądarkę internetową pokaż moją stronę
  • Wreszcie, pozostawiać okno cmd otwarte dla wszelkich dodatkowych poleceń podczas mojej sesji.

Prawdopodobnie mój projekt nazywa się

"antiquorum."

Utwórz plik

"init.bat"

w Twoim


Katalog% USERPROFILE% (otwórz okno

cmd

i spójrz na ścieżkę po lewej stronie kursora, aby zobaczyć, co to jest% USERPROFILE%)
@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end:start
start cmd/k %USERPROFILE%\init.bat worker
start cmd/k %USERPROFILE%\init.bat server
TIMEOUT 30
start "" "[url=http://localhost:3000/"]http://localhost:3000/"[/url]
GOTO end:server
rails s
GOTO end:worker
rake jobs:work:end

W nowym oknie wiersza polecenia wprowadź:

C:> init antiquorum

Kod otwiera dwa kolejne okna cmd i przeglądarkę.

TIMEOUT

pozwala uniknąć błędów przeglądarki.
Sekcja

:start

wykonuje pracę.
Możesz uruchomić zadania 1, 2 lub 4 osobno, wpisując parametry:

server

,

worker

lub brak, aby pozostawić otwarte polecenie cmd

korzeń


katalog

projekt „antykworum”.
Cieszyć się.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli dobrze zrozumiem, że robisz to na boku, twój plik bat otworzy wiersz polecenia i wydrukuje twoją wiadomość na ekranie.
cmd.exe hello world

mam nadzieję że to pomoże.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

aby uruchomić plik Pythona w nowym oknie cmd ze spacjami w nazwie pliku:
start cmd.exe/k python "C:\Program Files\HelloWorld.py"
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Dodawanie

/k


między dwoma zespołami


wykonuje oba polecenia
w kolejności

.
Przykład:
cmd/k echo "hello"

to polecenie najpierw otworzy
wiersz polecenia
, a następnie wykona
echo "hello"

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się