我是使用cmd和批处理脚本的新手。以下是我试图对.bat文件执行的操作
- 转到文件夹
- 在文件资源管理器中打开该文件夹
- 在vscode中打开该文件夹
- 启动Firefox浏览器
这里的顺序无关紧要。按任何顺序完成这些任务都可以
以下是我最初编写的命令
cd/
E:
cd folder1/folder2/folder3
code .
start .
start firefox
但有了这些命令,我得到的结果是
- 只有vscode是从我想用vscode打开的文件夹开始的
- 文件资源管理器和Firefox未启动
- cmd.exe继续运行。但它似乎只执行了高达的代码命令
- 当我关闭vscode时,cmd.exe也会随之关闭
然后我更改了命令的顺序,如下所示
cd/
E:
cd folder1/folder2/folder3
start .
start firefox
code .
这一次一切如预期。我查阅了start命令的文档,但没有找到任何关于start的内容(或者可能我不理解(命令
有人能解释一下为什么当我更改命令序列时结果发生了变化吗?
如注释中所述,code
实际上是一个批处理文件code.cmd
。
如果VSCode安装程序向%PATH%
添加了一个位置,请查看该位置,您应该会在bin
目录中看到code.cmd
从另一个批处理文件运行批处理文件时,如果希望控制权在完成后传递回初始脚本,则需要使用call
命令运行它。
@CD /D "E:folder1folder2folder3" 2>NUL || Exit /B
@Call "%ProgramFiles%Microsoft VS Codebincode.cmd" .
@Start "" "%SystemRoot%explorer.exe" .
@Start "" "%ProgramFiles%Mozilla Firefoxfirefox.exe"
如果你不想要健壮的代码,并且希望假设文件扩展名和环境设置,上面的内容可以简化为:
@CD /D E:folder1folder2folder3
@Call code .
@Start explorer .
@Start firefox