Файл BAT: откройте новое окно cmd и введите там код

все

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

Что я пытаюсь сделать, это открыть новое окно командной строки: запустите %windir%system32cmd.exe

и код, который я набираю за ним (например, печать) , должен отображаться там: Эхо "тест в новом окне"

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

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

с уважением

6 ответов


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

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

start cmd /k echo Hello, World!

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

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

start cmd /C pause

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


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

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

или

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

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

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

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

примеры:

запустите программу и передайте параметр filename:
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


это не очень легко.

лучший подход - иметь часть вашего скрипта, которую вы хотите выполнить в "новом окне", чтобы быть в отдельном .Bat-файл. Это может быть непрактично, если, например, вам нужно много состояния из остальной части вашего скрипта (переменные и т. д.). Один из вариантов-передать любые необходимые вам значения (например, 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%"

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


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

  1. Я хочу запустить мой rails server
  2. запустить грабли вакансии:работник для моего delayed_job камень тоже
  3. и откройте интернет браузер для показать мою страницу
  4. наконец,оставить a окне cmd открыть для любых дополнительных команд во время моего сессия.

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

создать " init.летучая мышь" в своем %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 и браузер. тайм-аут избежать ошибок в браузере.

на :start работает. Вы можете запускать задачи 1,2 или 4 отдельно, введя параметры как:сервер, работник, или нет, чтобы оставить cmd открытым в root of "antiquorum".

наслаждайтесь.


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

Mongo глобально добавлен в мой путь, поэтому мне не нужно 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"

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

cmd.exe hello world

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