如何使用BAT文件更改目录?

祖杰

我希望下面的代码C:\Users\zjafri\Desktop\Arthur\Runner2在运行此bat文件时目录中打开,但是它将在我的桌面目录中打开。

有人知道为什么吗?

%windir%\system32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3
CD C:\Users\zjafri\Desktop\Arthur\Runner2

控制台输出为:

C:\Users\zjafri\Desktop>C:\windows\system32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

(base) C:\Users\zjafri\Desktop>
莫菲

使用的命令行对于想要的行为是错误的,该行为是通过将特定目录作为当前目录来激活Anaconda环境,并使命令进程保持运行状态,以便手动输入更多要执行的命令。

批处理文件是一个脚本。脚本需要脚本解释器可执行文件。Windows批处理文件的解释器是Windows命令处理器cmd.exe,具有完整的合格文件名%SystemRoot%\System32\cmd.exe%ComSpec%SystemRootComSpec是两个预定义的Windows环境变量

Windows命令处理器在启动可执行文件时暂停批处理文件的处理,直到启动的可执行文件自身终止为止。

cmd.exe执行以下命令行的批处理文件的实例处理中会发生什么

%windir%\system32\cmd.exe "/K" C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

Windows命令处理器会再启动一个命令进程来处理另一个批处理文件,并在批处理文件执行完成后继续运行,因为该选项/K无用双引号引起来。因此,启动的的第二个实例cmd.exe不会自身终止。出于这个原因,第一个实例cmd.exewait等待第二个实例的终止,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输入通过在输入后仅敲击一次或多次来获得完成帮助文件夹/文件名中的几个字符,然后按RETURNENTER执行批处理文件,命令提示符窗口保持打开状态,并且Anaconda环境被激活,目录%UserProfile%\Desktop\Arthur\Runner2为当前目录。

好吧,首先打开命令提示符窗口并以完整路径手动运行批处理文件并不是很方便。批处理文件可以以短文件名存储在其中一个路径存在于环境变量(PATH例如Windows目录)的值中的文件夹之一中这样就可以打开命令提示符,仅键入批处理文件的文件名并按键RETURNENTER执行它。

另一个方便的解决方案是在用户桌面上创建一个快捷方式文件(* .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命令处理器并执行批处理文件以激活Anaconda环境,而与该应用程序当前具有输入焦点的位置无关,并且桌面是否位于应用程序窗口的后面或所有其他窗口的前面。上的选项卡的选项字体布局颜色的选项和它的外表可以定义快捷方式的属性的应使用用于阿纳康达像使用控制台窗口具有更多行/列和具有较大的字体作为默认。

尽管使用快捷方式文件绝对是该使用情况的最佳解决方案,但也可以双击运行批处理文件以打开命令提示符窗口,以执行批处理文件来激活Anaconda环境并保留命令当前目录设置为所需目录的情况下运行的进程。

这样的批处理文件仅需要一个命令行:

@start "Anaconda3" /D"%UserProfile%\Desktop\Arthur\Runner2" %ComSpec% /K C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

在这种情况下cmd.exe,使用此命令行处理批处理文件将启动一个新的命令进程,/K进程具有一个选项,该选项可通过执行以下操作来保持命令进程运行:以新控制台窗口的标题作为开始cmd.exeAnaconda3并在启动cmd.exe目录CD C:\Users\zjafri\Desktop\Arthur\Runner2作为当前目录之前进行设置在这种情况下,cmd.exe不等待启动秒的终止,cmd.exe因此cmd.exe使用此单个命令行处理批处理文件实例将立即终止。

这种批处理文件解决方案的缺点在于,用户无法配置激活Anaconda环境后继续运行的命令过程的选项,字体,布局,颜色

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • call /?
  • cd /?
  • cmd /?
  • start /?

PS:我既未安装Anaconda,也未阅读其文档。因此,我不知道C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3执行此批处理文件后会发生什么以及当前目录是什么。如果批处理文件编码正确,并且该参数C:\ProgramData\Anaconda3并不意味着将当前目录更改为该目录,则所有操作均应如上所述。否则,需要根据activate.bat环境的更改(即更改当前目录的时间)来调整提供的解决方案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.bat文件如何启动bash并更改目录?

来自分类Dev

如何在Windows 7系统中使用bat文件更改为子目录并运行exe?

来自分类Dev

更改目录后,使用bat文件运行Atom

来自分类Dev

如何使用FTP更改目录并复制文件?

来自分类Dev

如何更改目录以从其他驱动器运行.bat文件?

来自分类Dev

在命令中使用bat文件目录

来自分类Dev

如何使用Python监视文件而不是目录以进行更改?

来自分类Dev

如何使用Python更改目录中的多个文件名

来自分类Dev

如何使用Powershell将目录更改为程序文件?

来自分类Dev

如何使用OSX库目录检测文件更改?

来自分类Dev

如何使用GUI复制文件并更改目录的读/写权限?

来自分类Dev

使用 .bat 更改文件名

来自分类Dev

如何使用bat文件静默删除文件

来自分类Dev

在Bash脚本中,如何使用`dirname`函数将目录更改为文件的目录路径?

来自分类Dev

如何在 .bat 文件中指定目录路径?

来自分类Dev

如何递归更改文件和目录的权限?

来自分类Dev

如何更改MSI日志文件的默认目录?

来自分类Dev

如何递归更改文件和目录的权限?

来自分类Dev

如何通过脚本文件更改目录

来自分类Dev

如何只查找更改目录中的文件?

来自分类Dev

使用Ruby查找目录更改的文件

来自分类Dev

使用sudo更改根目录中的文件

来自分类Dev

如何将路径更改.bat文件放在%PATH%中?

来自分类Dev

如何使用sed将目录下所有文件中的Windows路径更改为linux路径

来自分类Dev

如何使用Windows API C ++更改已创建的文件夹/目录安全权限

来自分类Dev

在Windows中使用制表符完成功能更改目录时如何列出文件?

来自分类Dev

如何使用Shell脚本更改目录?

来自分类Dev

如何使用Shell脚本更改目录?

来自分类Dev

如何使用KDialog更改工作目录?

Related 相关文章

  1. 1

    .bat文件如何启动bash并更改目录?

  2. 2

    如何在Windows 7系统中使用bat文件更改为子目录并运行exe?

  3. 3

    更改目录后,使用bat文件运行Atom

  4. 4

    如何使用FTP更改目录并复制文件?

  5. 5

    如何更改目录以从其他驱动器运行.bat文件?

  6. 6

    在命令中使用bat文件目录

  7. 7

    如何使用Python监视文件而不是目录以进行更改?

  8. 8

    如何使用Python更改目录中的多个文件名

  9. 9

    如何使用Powershell将目录更改为程序文件?

  10. 10

    如何使用OSX库目录检测文件更改?

  11. 11

    如何使用GUI复制文件并更改目录的读/写权限?

  12. 12

    使用 .bat 更改文件名

  13. 13

    如何使用bat文件静默删除文件

  14. 14

    在Bash脚本中,如何使用`dirname`函数将目录更改为文件的目录路径?

  15. 15

    如何在 .bat 文件中指定目录路径?

  16. 16

    如何递归更改文件和目录的权限?

  17. 17

    如何更改MSI日志文件的默认目录?

  18. 18

    如何递归更改文件和目录的权限?

  19. 19

    如何通过脚本文件更改目录

  20. 20

    如何只查找更改目录中的文件?

  21. 21

    使用Ruby查找目录更改的文件

  22. 22

    使用sudo更改根目录中的文件

  23. 23

    如何将路径更改.bat文件放在%PATH%中?

  24. 24

    如何使用sed将目录下所有文件中的Windows路径更改为linux路径

  25. 25

    如何使用Windows API C ++更改已创建的文件夹/目录安全权限

  26. 26

    在Windows中使用制表符完成功能更改目录时如何列出文件?

  27. 27

    如何使用Shell脚本更改目录?

  28. 28

    如何使用Shell脚本更改目录?

  29. 29

    如何使用KDialog更改工作目录?

热门标签

归档