BAT файл: откройте новое окно cmd и введите туда код

Я пытаюсь работать с файлом .BAT, это должен быть очень простой скрипт, но я не знаю, как это сделать (я не знаком с ним).

Я пытаюсь открыть новое командное окно: start% windir%\system32\cmd.exe

И код, который я печатаю за ним (например, распечатка), должен появиться там: echo "test in new window"

Как я могу это сделать?

Поэтому мне нужно сделать кодирование в новом командном окне. Может ли кто-нибудь помочь мне в этом?

Ответ 1

Возможно, вы уже нашли свой ответ, потому что это было некоторое время назад, когда вы спросили. Но я пытался сделать что-то подобное при кодировании. Я хотел запустить "сервер rails" в новом окне cmd, поэтому мне не нужно открывать новый cmd, а затем снова искать мой путь.

То, что я узнал, это использовать переключатель K следующим образом:

start cmd /k echo Hello, World!

начать, прежде чем "cmd" откроет приложение в новом окне и "/K" выполнит "echo Hello, World!". после того, как новый cmd встал.

Вы также можете использовать переключатель /C для чего-то подобного.

start cmd /C pause

Затем будет выполняться "пауза", но закройте окно, когда команда будет выполнена. В этом случае после нажатия кнопки. Я нашел это полезным для "сервера rails", а затем, когда я завершаю работу своего dev-сервера, мне не нужно закрывать окно после.

Ответ 2

В своем пакетном файле используйте следующее:

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

или

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

/c Выполняет команду указанный строкой, а затем заканчивается
/k Выполняет команда, заданная строкой, но остается

Подробнее см. документацию cmd.exe, используя cmd /?.

Правильное форматирование командной строки немного усложняется пробелами в аргументах. См. Примеры ниже. Обратите внимание на использование вложенных двойных кавычек в некоторых примерах.

Примеры:

Запустите программу и передайте параметр имени файла:
CMD /c write.exe c:\docs\sample.txt

Запустите программу и пропустите длинное имя файла:
CMD /c write.exe "c:\sample documents\sample.txt"

Пространства в пути программы:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

Пространства в пути программы + параметры:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

Запустите demo1 и demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

Источник: http://ss64.com/nt/cmd.html

Ответ 3

Это не очень просто.

Лучший подход состоит в том, чтобы часть вашего script, которую вы хотите выполнить в "новом окне", в отдельный файл .bat. Это может быть непрактичным, если, например, вам нужно много состояний из остальной части вашего script (переменные и т.д.). Один из вариантов - передать любые требуемые значения (например, dir для работы) в пакетный файл:

start cmd.exe stuff.bat %this_dir%

Если у вас есть большое количество состояний для передачи, вы можете подумать о создании командного файла во время выполнения:

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%"

Очевидно, это тривиальный пример.

Ответ 4

Спасибо всем здесь, в Stack Overflow; это решение решает вышеуказанный вопрос, но распространяется на автоматическое выполнение этих задач:

  • Я хочу запустить мой сервер rails
  • Запустите rake jobs: worker для моего желоба delayed_job.
  • и открыть интернет-браузер по умолчанию, чтобы показать мою страницу
  • наконец, оставьте окно cmd для любых дополнительных команд во время моей сессии.

Я предполагаю, что мой проект называется "antiquorum."

Создайте файл "init.bat" в каталоге % USERPROFILE% (откройте окно cmd и посмотрите путь слева от курсора, чтобы узнать, что%% 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

В новом окне окна командной строки: C: > init antiquorum

Код открывает еще два cmd-окна и браузер. ВРЕМЯ позволяет избежать ошибок в браузере.

Раздел : начать выполняет эту работу. Вы можете запускать задачи 1,2 или 4 отдельно, введя параметры как: сервер, рабочий, или никто не оставит CMD открытым в root "антикворум" .

Enjoy.

Ответ 5

Вышеупомянутые ответы помогли мне. Но все же потребовалось некоторое выяснение. Вот пример script Я использую для запуска 3 процесса для веб-разработки. Это приводит к тому, что 3 окна остаются открытыми, так как они должны работать непрерывно.

Монго глобально добавляется к моему пути, поэтому мне не нужно записывать cd, как я делаю для двух других программ. Конечно, путь к вашим файлам будет различным, но, надеюсь, это поможет.

:: 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"

Ответ 6

Если я понимаю, что вы правильно делаете это, ваш файл bat откроет командную строку и напечатает ваше сообщение на экране.

cmd.exe hello world

надеюсь, что это поможет.

Ответ 7

запустить файл python в новом окне cmd с пробелами в имени файла:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"

Ответ 8

Добавление /k между двумя командами выполняет обе команды in order.

Пример:

cmd /k echo "hello"

эта команда сначала откроет command prompt затем выполнит command prompt echo "hello"