为什么更改 cmd 命令中的顺序会产生不同的结果?

Why change of sequence in cmd command gives different result?

我是使用 cmd 和批处理脚本的新手。这是我尝试对 .bat 文件执行的操作。

  1. 转到文件夹
  2. 在文件资源管理器中打开该文件夹
  3. 打开 vscode
  4. 中的那个文件夹
  5. 启动火狐浏览器

此处顺序无关紧要。以任何顺序执行这些任务都可以。

这是我最初写的命令

cd/
E:
cd folder1/folder2/folder3
code .
start .
start firefox

但是使用这些命令我得到的结果是

  1. 只有 vscode 以我想用 vscode
  2. 打开的文件夹开头
  3. 文件资源管理器和 Firefox 未启动
  4. cmd.exe 继续 运行。但它似乎只执行了 code . command
  5. 当我关闭 vscode 时,cmd.exe 也会随之关闭

然后我改变了命令的顺序如下

cd/
E:
cd folder1/folder2/folder3
start .
start firefox
code .

这次一切都按预期进行。我已经查找了 start 命令的文档,但没有找到任何关于 start . 命令的内容(或者我可能不明白)。
谁能解释一下为什么当我更改命令顺序时结果会发生变化?

由于code确实是一个批处理文件,code.cmd

如果您的 VSCode 安装程序在您的 %PATH% 中添加了一个位置,请查看那里,您应该会在 \bin 目录中看到 code.cmd .

当您 运行 来自另一个批处理文件时,如果您希望控制权在完成后传回初始脚本,您需要使用 运行 命令 运行 它。

@CD /D "E:\folder1\folder2\folder3" 2>NUL || Exit /B
@Call "%ProgramFiles%\Microsoft VS Code\bin\code.cmd" .
@Start "" "%SystemRoot%\explorer.exe" .
@Start "" "%ProgramFiles%\Mozilla Firefox\firefox.exe"

如果您不想要健壮的代码,并希望采用文件扩展名和环境设置,上面的内容可以简化为:

@CD /D E:\folder1\folder2\folder3
@Call code .
@Start explorer .
@Start firefox