脚本制作:执行多条 cmd 命令

一、node 执行多条 cmd 命令

1.1 例子

以 hexo 发布的过程为例,通常需要执行三条命令

1
2
3
4
5
6
# 清除
$ hexo clean
# 重新生成
$ hexo generate
# 部署
$ hexo deploy

1.2 编写脚本

1)新建文件 autoDeploy.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const util = require("util");
// 使用 util.promisify ,让一个遵循异常优先的回调风格的函数,转化为一个返回值是一个 promise 版本的函数,以便结合 Await/Async 使用
// 使用 child_process.exec, 创建异步进程,衍生一个 shell 并在 shell 中执行 command
const exec = util.promisify(require("child_process").exec);

// test: const cmd = "echo demotext >demo.txt";
const CLEAN = "hexo clean";
const GENERATE = "hexo generate";
const DEPLOY = "hexo deploy";

async function cmd() {
try {
// 依次执行多条命令
await loadCmd(CLEAN);
await loadCmd(GENERATE);
await loadCmd(DEPLOY);
console.log(`已全部执行完毕`);
} catch (err) {
console.log(err);
console.log("! 命令执行失败");
}
}

async function loadCmd(val) {
console.log(`${val}: 命令执行中...`);
await exec(val);
console.log(`${val}: 命令完成`);
console.log(
`/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /`
);
}

cmd();

2)在同级目录下新建 autoDeploy.bat 批处理文件

1
2
3
4
node ./autoDeploy.js 

:: pause 用于让命令执行完毕后不自动关闭窗口
pause

1.3 执行

双击 autoDeploy.bat 文件。

效果

image

end

[][]

本文结束,感谢您的阅读