是否可以通过某种方式在IAudioEndpointVolume
的{{1}}中实现它而不使用第三方组件?
答案 0 :(得分:0)
我不确定这是否是最好的解决方案,但是我还无法提出更好的解决方案。由于我一直在寻找 Windows控制台的方法,因此我只在其中进行过检查,但我认为它也应在Linux Shell中工作。
因此,我们将有2个JavaScript文件:
send-param.js
:应发送(返回)字符串参数read-param.js
:应获取该字符串参数作为参数这两个JS文件均应从package.json
脚本运行。该技术本身非常简单:send-param.js
将字符串值写入stdout
,而read-param.js
然后将其作为参数。主要问题是如何将stdout
转换为read-param.js
脚本的参数。
要向stdout
写一些东西,我们可以使用console.log
,而send-param.js
实际上是这样的:
console.log("Hello World!");
接下来,我们要运行read-param.js
来从参数中获取"Hello World!"
字符串,但是似乎不可能直接在Windows控制台中做到这一点。因此,我不得不使用临时操作将参数从stdout
写入辅助文件(我刚刚将其命名为'1.txt'
),这是在脚本的第一部分中完成的:
node send-param.js > 1.txt
现在我们在"Hello World!"
文件中有'1.txt'
,我们必须以某种方式将其发送为read-param.js
脚本的参数。再次,我找不到直接在Windows控制台中使用它的变量,而是使用了一个名为'ARG'
的变量:
set /p ARG=<1.txt
最后,我们可以使用'ARG'
变量作为read-param.js
脚本的参数:
“节点read-param.js%ARG%”
我想到的第一件事是用单行脚本执行所有命令,如下所示:
"send-param.js > 1.txt && set /p ARG=<1.txt && node read-param.js %ARG%"
但是它不起作用,因为它需要作为单独的命令(see why)运行set
。
在read-param.js
中,我们仅将第一个参数读为process.argv[2]
(Node.js reserves的自变量为0和1)。
这是最后的工作示例:
send-param.js:
console.log("Hello World!");
read-param.js:
const argument = process.argv[2];
if (!argument)
console.log('An argument is required.');
else
console.log(`Argument: '${argument}'`);
package.json:
"scripts": {
"send": "node send-param.js > 1.txt && set /p ARG=<1.txt && npm run read",
"read": "node read-param.js %ARG%",
}
现在运行npm run send
命令,您将得到:Argument: 'Hello World!'