Используемые командные строки неверны для требуемого поведения, которое активирует среду Anaconda3 , указав каталог c текущим каталогом и оставив процесс выполнения команды для ввода вручную большего количества команд для выполнения.
Пакетный файл - это скрипт. Скрипту нужен исполняемый файл интерпретатора скрипта. Интерпретатор для Windows командных файлов - это Windows командный процессор cmd.exe
с полным именем файла %SystemRoot%\System32\cmd.exe
или %ComSpec%
. SystemRoot
и ComSpec
- это две предопределенные Windows переменные среды .
Windows Командный процессор останавливает обработку пакетного файла при запуске исполняемого файла до тех пор, пока запущенный исполняемый файл не завершит сам себя. .
Что происходит при обработке экземпляра cmd.exe
командного файла следующей командной строкой?
%windir%\system32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
Windows Командный процессор запускает еще один командный процесс для обработки другого командного файла. и из-за опции /K
, бесполезно заключенной в двойные кавычки, поддерживает работу после завершения выполнения пакетного файла. Таким образом, запущенный второй экземпляр cmd.exe
не завершает себя. По этой причине первый экземпляр cmd.exe
ожидает, ждет и ожидает завершения второго экземпляра cmd.exe
, прежде чем он продолжит обработку пакетного файла с чтением следующей командной строки.
Следовательно, командная строка CD C:\Users\zjafri\Desktop\Arthur\Runner2
выполняется первым командным процессом, только когда пользователь набрал exit
во втором командном процессе, чтобы завершить второй cmd.exe
экземпляр.
Одним из решений было бы использование следующих командных строк в командном файле:
call "C:\ProgramData\Anaconda3\Scripts\activate.bat" "C:\ProgramData\Anaconda3"
cd /D "%UserProfile%\Desktop\Arthur\Runner2"
Этот пакетный файл приводит к выполнению пакетного файла activate.bat
, затем выполняется команда CD и затем обработка пакетного файла заканчивается.
Что происходит дальше, зависит от о том, как пакетный файл был запущен. Если был сделан двойной щелчок по пакетному файлу, Windows вызывается cmd.exe
с использованием неявной опции /C
для выполнения пакетного файла, а затем закрыть командный процесс. Поэтому при двойном щелчке командного файла открывается окно консоли, выполняются две командные строки и окно консоли закрывается, когда cmd.exe
завершает себя.
Но если пользователь открыл командную строку что означает запуск cmd.exe
с использованием неявной опции /K
и выполнение командного файла из окна командной строки, введя полное имя файла без или с помощью справки о завершении, нажав один или несколько раз TAB после ввода всего нескольких символов имени папки / файла и нажатия RETURN или ENTER для запуска пакетного файла окно командной строки остается открытым и Anaconda3 * Среда активируется с каталогом %UserProfile%\Desktop\Arthur\Runner2
, являющимся текущим каталогом.
Что ж, сначала открыть окно командной строки и вручную запустить командный файл с полным путем не очень удобно. Пакетный файл может быть сохранен с коротким именем файла в одной из папок, путь к которой указан в значении переменной среды PATH
, как в каталоге Windows. Это позволило бы открыть командную строку, ввести только имя файла командного файла и нажать клавишу RETURN или ENTER , чтобы выполнить его.
Еще один удобный решением было бы создать на рабочем столе пользователя файл ярлыка (* .lnk) с именем файла Anaconda3
, для которого в свойствах ярлыка настроено:
Цель: %SystemRoot%\System32\cmd.exe /K C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
Начало в: C:\Users\zjafri\Desktop\Arthur\Runner2
Комментарий: Opens a command prompt and activates Anaconda3 in Runner2
Существует несколько преимуществ использования файла ярлыка. Сочетание клавиш может быть определено для запуска процессора команд Windows и запуска командного файла для активации среды Anaconda3 независимо от того, какое приложение в данный момент имеет фокус ввода и если рабочий стол находится за Окно приложения или напротив всего остального windows. На вкладках Параметры , Шрифт , Макет , Цвета свойств ярлыка можно определить параметры и внешний вид, которые следует использовать при использовании Anaconda3 , как при использовании окна консоли с большим количеством строк / столбцов и шрифтом большего размера, как по умолчанию.
Хотя использование файла ярлыка, безусловно, будет лучшим решением для этого использования В этом случае также можно запустить командный файл двойным щелчком мыши, чтобы открыть окно командной строки, чтобы выполнить командный файл для активации среды Anaconda3 и сохранить выполнение командного процесса с текущим каталогом, установленным в требуемый каталог.
Для такого пакетного файла потребуется всего одна командная строка:
@start "Anaconda3" /D"%UserProfile%\Desktop\Arthur\Runner2" %ComSpec% /K C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
В этом случае cmd.exe
обработка пакетного файла с помощью этой командной строки запускает новый командный процесс с параметром /K
чтобы сохранить выполнение командного процесса после выполнения командного файла при запуске cmd.exe
с Anaconda3
в качестве заголовка для нового окна консоли и wi ая установка перед запуском cmd.exe
каталога CD C:\Users\zjafri\Desktop\Arthur\Runner2
в качестве текущего каталога. cmd.exe
не ожидает завершения запущенной второй cmd.exe
в этом случае, поэтому экземпляр cmd.exe
, обрабатывающий пакетный файл с помощью этой единой командной строки, немедленно прекращает работу.
Недостаток этого решения для пакетного файла заключается в том, что у пользователя нет возможности настроить параметры, шрифт, макет, цвета командного процесса, который продолжает работать после активации среды Anaconda3 .
Для понимания используемых команд и того, как они работают откройте окно командной строки , выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.
call /?
cd /?
cmd /?
start /?
PS: я не установил ни Anaconda3 , ни прочитал его документацию. Поэтому я не знаю, что происходит при выполнении C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
и каков текущий каталог после выполнения этого командного файла. Если командный файл имеет хорошую кодировку и аргумент C:\ProgramData\Anaconda3
не означает, что текущий каталог будет изменен на этот каталог, тогда все должно работать так, как написано выше. В противном случае предоставляемые решения необходимо адаптировать в зависимости от того, что activate.bat
изменяется в среде, то есть когда оно меняет текущий каталог.