【发布时间】:2021-02-18 06:33:02
【问题描述】:
我有一个 Node.js 程序,我需要在其中单击按钮,在 Windows 命令行中运行 2 个命令。例如,我试图通过单击按钮来自动化的过程可以通过转到 cmd 并输入以下命令来手动完成:
pushd \\myserver.com\folder1\folder2 //Connect to remote server folder structure
mkdir NewFolder //Create new folder in the remote folder
我发现很多资源都指出我应该使用“child_process”,但是当涉及到 shell 脚本时,我完全迷失了方向,并且很难弄清楚如何做到这一点。这是我到目前为止的代码:
var cp = require('child_process');
cp.exec('pushd \\\\myserver.com\\folder1\\folder2\\', { shell: '/bin/bash' }, function(err, stdout, stderr){
if(err){
console.log(err);
}
});
但是上面的代码只是返回这个错误(奇怪地从给定的目录中删除了'\'):
{ Error: Command failed: pushd \\myserver.com\folder1\folder2\
/bin/bash: line 1: pushd: \myserver.comfolder1folder2: No such file or directory
at ChildProcess.exithandler (child_process.js:281:12)
killed: false,
code: 1,
signal: null,
cmd: 'pushd \\\\myserver.com\\folder1\\folder2\\' }
/bin/bash: line 1: pushd: \myserver.comfolder1folder2: No such file or directory
我真的迷路了,如果有任何帮助,我将不胜感激。您必须对 child_process 进行任何替代也可能非常有帮助。谢谢!
【问题讨论】:
-
您使用的是什么 bash?这真的与节点或javascript无关。
exec也将删除新工作目录的上下文,因此您的mkdir2nd 命令将不起作用。你应该考虑用典型的文件系统调用来做,而不是去壳。 -
@DanielA.White 您能否详细说明“典型的文件系统调用”?如果您的意思是 fs.mkdir() 我得出的结论是无法在远程服务器中使用 fs 并且它只能在本地工作。这实际上是导致我尝试这种 cmd 方式的原因。有什么建议么?我已经被这个问题困扰了几个星期了
-
您可能希望将共享挂载为卷,然后执行
fs.mkdir。 -
bash 不理解 unc 路径
标签: javascript node.js windows command-line child-process