Plik BAT: Otwórz nowe okno cmd i wykonaj tam 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ć?
Author: Alexander Abakumov, 2012-02-22

8 answers

Możesz już znaleźć odpowiedź, ponieważ to było jakiś czas temu pytałeś. Ale próbowałem zrobić coś podobnego podczas kodowania ror. Chciałem uruchomić "rails server" w nowym oknie cmd, więc nie muszę otwierać nowego cmd i ponownie znajdować ścieżki.

Dowiedziałem się, że używam przełącznika K w ten sposób:

start cmd /k echo Hello, World!

Uruchom zanim " cmd "otworzy aplikację w nowym oknie i" / K "wykona" echo Hello, World!"po uruchomieniu nowego cmd.

Możesz również użyć przełącznika /C za coś podobnego.

start cmd /C pause

Spowoduje to uruchomienie "pause", ale zamknięcie okna po wykonaniu polecenia. W tym przypadku po naciśnięciu przycisku. Okazało się, że jest to przydatne dla "rails server", więc po wyłączeniu serwera dev nie muszę zamykać okna po.

 284
Author: aross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 04:41:04

Użyj następującego pliku wsadowego:

start cmd.exe /k "more-batch-commands-here"

Lub

start cmd.exe /c "more-batch-commands-here"

/c wykonuje polecenie określony przez string, a następnie terminuje
/ align = "left" / polecenie określone przez string ale remains

Skonsultuj się z cmd.dokumentacja exe za pomocą cmd /? aby uzyskać więcej szczegółów.

Poprawne formatowanie ciągu poleceń staje się nieco bardziej skomplikowane ze spacjami w argumentach. Zobacz przykłady poniżej. Zwróć uwagę na użycie zagnieżdżonych podwójne cudzysłowy w niektórych przykładach.

Przykłady:

Uruchom program i podaj parametr filename:
CMD /c write.exe c:\docs\sample.txt

Uruchom program i podaj 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""

Uruchom demo1 i demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

źródło: http://ss64.com/nt/cmd.html

 89
Author: Shannon Matthews,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-06 06:37:23

To nie jest łatwe.

Najlepszym podejściem jest to, aby część skryptu, którą chcesz wykonać w "nowym oknie", znajdowała się w osobnym .plik bat. Może to być niepraktyczne, jeśli np. potrzebujesz dużo stanu z reszty skryptu (zmienne, itp.). Jedną z opcji jest przekazanie do pliku wsadowego dowolnych wartości (np.]}

start cmd.exe stuff.bat %this_dir%

Jeśli masz dużą ilość stanów do przesłania, możesz rozważyć wygenerowanie pliku wsadowego w czas trwania:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo

del /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.
 13
Author: sorpigal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 13:09:37

Powyższe odpowiedzi mi pomogły. Ale i tak trzeba było coś wymyślić. Oto przykładowy skrypt, którego używam do uruchomienia 3 procesów do tworzenia stron internetowych. Powoduje to, że 3 okna pozostają otwarte, ponieważ muszą działać w sposób ciągły.

Mongo jest globalnie dodawany do mojej ścieżki, więc nie muszę nagrywać płyty tak, jak w przypadku pozostałych dwóch programów. Oczywiście ścieżka do plików będzie różna, ale mam 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"
 11
Author: Dan Zuzevich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-12 13:33:40

Dzięki wszystkim tutaj w Stack Overflow; To rozwiązanie rozwiązuje powyższe pytanie, ale jest rozszerzone, aby automatycznie uruchamiać te zadania:

  1. chcę uruchomić mój serwer rails
  2. Uruchom grabie jobs: worker dla mojego opóźnionego_job też
  3. i otwórz domyślną przeglądarkę internetową na Pokaż moją stronę
  4. wreszcie, aby Pozostawić okno cmd otwarte dla dodatkowych poleceń podczas mojej sesji.

Chyba mój projekt nazywa się "antiquorum."

Utwórz "init.bat" plik w katalogu %USERPROFILE % (Otwórz oknocmd i spójrz na ścieżkę po lewej stronie kursora, aby dowiedzieć się, czym 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 "" "http://localhost:3000/"
    GOTO end
:server
    rails s
    GOTO end
:worker
    rake jobs:work
:end

W nowym oknie wiersza poleceń wpisz: C:> init antiquorum

Kod otwiera dwa kolejne okna cmd i przeglądarkę. TIMEOUT pozwala uniknąć błędów w przeglądarce.

Sekcja :start działa. Można uruchamiać zadania 1,2 lub 4 osobno wpisując params jako: Serwer, w tym samym roku, w ramach projektu"antiquorum"("antiquorum") otwarto cmd w korzeniu projektu "antiquorum" ("antiquorum") projektu.

Smacznego.
 7
Author: Fer Padron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-08 01:37:19

Jeśli dobrze rozumiem, że robisz to w side, Twój plik bat otworzy wiersz polecenia i wydrukuje Twoją wiadomość na ekranie.

cmd.exe hello world
Mam nadzieję, że to pomoże.
 2
Author: Chris Derry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-15 23:32:09

Aby uruchomić plik Pythona w nowym oknie cmd ze spacjami w nazwie pliku:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"
 2
Author: bracoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-19 02:30:46

Dodawanie /k między dwoma poleceniami wykonuje oba polecenia in order.

Przykład:

cmd /k echo "hello"

To polecenie najpierw otworzy command prompt a następnie wykona echo "hello" polecenie

 0
Author: Vicky Salunkhe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-23 21:07:44