1.编码问题:
使用下列带中文的命令让文件管理器打开指定含有中文路径的文件夹失败,原因是bat脚本使用ANSI编码,而我先创建了utf-8编码的txt,然后改了后缀,执行时无法识别中文,导致文件管理器无法定位到指定路径。
explorer /select,"D:\javaLearning\Web\前端学习\vue\2、最新Vue2+3 入门到实战课程\Vue2+3入门到实战-配套资料"
解决办法:将脚本改为ANSI编码即可。
2.bat程序阻塞无法自动结束,手动结束导致vscode随之关闭。
完整脚本如下:
start "" "D:\VScode\Microsoft VS Code\Code.exe"
start "" "C:\Program Files (x86)\Tencent\QQNT\QQ.exe"
start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" "https://www.bilibili.com"
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" "https://yiyan.baidu.com"
explorer /select,"D:\javaLearning\Web\前端学习\vue\2、最新Vue2+3 入门到实战课程\Vue2+3入门到实战-配套资料"
执行完后脚本进入阻塞状态,报错:
[main 2024-09-25T14:47:03.294Z] update#setState idle
[main 2024-09-25T14:47:05.073Z] WSL is not installed, so could not detect WSL profiles
[126160:0925/224705.954:ERROR:jump_list.cc(300)] Failed to append custom category '鏈€杩戜娇鐢ㄧ殑鏂囦欢澶? to Jump List due to system privacy settings.
[main 2024-09-25T14:47:06.402Z] updateWindowsJumpList#setJumpList unexpected result: customCategoryAccessDeniedError
[main 2024-09-25T14:47:33.300Z] update#setState checking for updates
[main 2024-09-25T14:47:33.304Z] update#setState downloading
[main 2024-09-25T14:47:33.309Z] update#setState updating
[main 2024-09-25T14:47:50.487Z] update#setState ready
解决办法是把打开vscode的语句放在最后执行
如图:
原因不可知。
目前发现新线索:
cmd输入start "" "D:\VScode\Microsoft VS Code\Code.exe"会导致cmd卡住,关闭cmd则vscode随之关闭。
vscode提供了命令行启动vscode的方法,即code命令。
在bat脚本的任意位置输入命令:
start "" code
发现bat脚本都可以正常运行
但是 start "" code 命令启动vscode之后,vscode又额外打开了一个新的cmd窗口
bat的命令行窗口会自动关闭,但是这个新产生的命令行窗口无法自动关闭。
由此猜测,vscode启动需要占用整个cmd进程的所有资源为其服务,把start "" "D:\VScode\Microsoft VS Code\Code.exe"语句放在最后vscode可以获得所有资源成功启动,此时bat自动关闭。而在除末尾外的其他位置,有其他进程占用了vscode启动所需资源,vscode提供的标准启动方式 start "" code会创建新的cmd进程为其服务来避免这种情况,但是当vscode启动成功后,vscode没有杀死这个新的cmd进程。
因此要想实现cmd把所有项目启动完还自动关闭,目前只能把start "" "D:\VScode\Microsoft VS Code\Code.exe"放在末尾