Выполнить команду после изменения каталога

#batch-file #yarnpkg

#пакетный файл #yarnpkg

Вопрос:

Я пытаюсь записать файл bat, открыть cmd изменить каталог, а затем запустить yarn.

Это то, что у меня есть на данный момент. Он открывается cmd и изменяет каталог, затем открывается второе cmd окно и выполняется команда yarn в исходном каталоге.

 start cmd /k cd /D C:DevelopmentprojectX.WebApp 
start yarn start --port 4201
  

Однако я хочу cd перейти в каталог и выполнить yarn в том же самом окне cmd внутри cd каталога ‘d.

 start cmd /k cd /D C:DevelopmentprojectX.WebApp yarn start --port 4201
  

Где yarn

 C:Program Files (x86)Yarnbinyarn
C:Program Files (x86)Yarnbinyarn.cmd
C:Program Files (x86)Yarnbinyarn.js
  

В настоящее время то, что я должен сделать

  • откройте cmd.
  • измените каталог на C:DevelopmentprojectX.WebApp
  • введите yarn start -порт 4201
  • дождитесь запуска приложения.
  • Оставьте окно открытым

Я хотел бы иметь все это в одном bat-файле, который я мог бы запустить и заставить его выполнять все три действия за меня, а не вводить это все время. Я не предпочитаю, чтобы это было в однострочной команде.

Комментарии:

1. Почему бы просто не использовать /D опцию: start "" /D "C:DevelopmentprojectX.WebApp" cmd /K yarn start --port 4201

Ответ №1:

Похоже, вы хотите запустить yarn в том же окне, а не открывать новое окно.

 @echo off
cd /D "C:DevelopmentprojectX.WebApp"
start "" /b yarn start --port
pause
  

Комментарии:

1. Ты мой герой. Клянусь, я пробовал что-то подобное, уже думаю, что это была пауза, которую я пропустил.

Ответ №2:

Для вашей заявленной проблемы я бы забыл о явном изменении каталога и использовании параметров уже используемой Start команды, в частности, ее /D опции.

 Start /B /D "C:DevelopmentprojectX.WebApp" Cmd /K "yarn start --port 4201"
  

Комментарии:

1. Я не запрашиваю команду из одной строки. Я просто хочу иметь возможность запускать bat-файл, чтобы он открывал окно cmd и запускал yarn, чтобы мне не приходилось каждый раз открывать каталог изменений cmd и вводить эту команду вручную. Я не предпочитаю, чтобы это было в однострочной команде.

2. Ваша команда просто мигает, открывает окно cmd и создает его. Это не запускает сервер

3. Cmd /K открывает cmd.exe окно и сохраняет его открытым, если бы вы удалили команду yarn, оставив только Start /D "C:DevelopmentprojectX.WebApp" Cmd /K , вы бы ясно увидели, что новый cmd.exe будет открыт с C:DevelopmentprojectX.WebApp в качестве текущего каталога. Итак, принимая это во внимание, моя команда выполняет то, что вы просили, она открывает новый cmd.exe окно с каталогом, помещенным в /D опции в качестве следующего рабочего каталога, и запускает заданную вами команду. Поскольку вы теперь изменили текст своего вопроса, я скорректировал свой ответ в соответствии с этими изменениями, в частности, используя /B .

Ответ №3:

В пакетном файле Windows вы можете запускать команды одну за другой с помощью amp;amp; :

 start cmd /k cd /D C:DevelopmentprojectX.WebApp amp;amp; yarn start --port 4201
  

Если команда cd завершится успешно, то будет запущена команда yarn.

Комментарии:

1. Извините, не работает. Он изменяет каталог, но не запускает yarn