从 nodejs 监控 dism.exe
Monitor dism.exe from nodejs
我需要帮助来监控 windows 系统上 dism.exe 的进度条。
dism.exe 是从我的 node.js 脚本生成的:
const { spawn, exec } = require('child_process');
const ls = exec('dism.exe /Unmount-Image /MountDir:"C:\WinPE_amd64\mount" /discard');
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
终端上的标准输出:
C:\Users\Admin\Desktop>node test.js
stdout: Tool zur Imageverwaltung
f�r die Bereitstellung Version: 10.0.17763.1
stdout: Bereitstellung des Abbilds wird aufgehoben
[= 2.0% ]
...
[===========================99.0%========================= ]
[==========================100.0%==========================]
stdout: Der Vorgang wurde erfolgreich beendet.
child process exited with code 0
C:\Users\Admin\Desktop>
我不明白为什么进度条不写入 stdout/stderr。
当进度条为 displayed/renderd
时,不会触发 "data" 事件
谁能帮我把进度条作为字符串传递给 cb/function?
回调被触发,但是 console.log 没有工作(我不知道为什么,我认为是因为进度条在同一行中呈现 \r 并替换了 console.log 中的文本)
with util.insepct 我从 dism 得到了准确的输出。
我的回调:
const handleProgress = function handleProgress(str) {
str = util.inspect(str);
if (str.substring(0, 4) == "'\r[") {
let precent = str.split("%")[0];
precent = precent.replace(/=/g, "");
precent = precent.substring(4);
precent = Number(precent);
console.log(precent);
//console.log(">> done %d%%", precent);
//socket.emit("installation.progress", precent);
} else {
// normal "stat" feedback
console.log("IN CB", str)
}
};
现在可以了,;)
我需要帮助来监控 windows 系统上 dism.exe 的进度条。 dism.exe 是从我的 node.js 脚本生成的:
const { spawn, exec } = require('child_process');
const ls = exec('dism.exe /Unmount-Image /MountDir:"C:\WinPE_amd64\mount" /discard');
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
终端上的标准输出:
C:\Users\Admin\Desktop>node test.js stdout: Tool zur Imageverwaltung f�r die Bereitstellung Version: 10.0.17763.1
stdout: Bereitstellung des Abbilds wird aufgehoben
[= 2.0% ]
...
[===========================99.0%========================= ]
[==========================100.0%==========================]
stdout: Der Vorgang wurde erfolgreich beendet.
child process exited with code 0
C:\Users\Admin\Desktop>
我不明白为什么进度条不写入 stdout/stderr。 当进度条为 displayed/renderd
时,不会触发 "data" 事件谁能帮我把进度条作为字符串传递给 cb/function?
回调被触发,但是 console.log 没有工作(我不知道为什么,我认为是因为进度条在同一行中呈现 \r 并替换了 console.log 中的文本)
with util.insepct 我从 dism 得到了准确的输出。 我的回调:
const handleProgress = function handleProgress(str) {
str = util.inspect(str);
if (str.substring(0, 4) == "'\r[") {
let precent = str.split("%")[0];
precent = precent.replace(/=/g, "");
precent = precent.substring(4);
precent = Number(precent);
console.log(precent);
//console.log(">> done %d%%", precent);
//socket.emit("installation.progress", precent);
} else {
// normal "stat" feedback
console.log("IN CB", str)
}
};
现在可以了,;)