Node.js 执行';mv';Bash、Zsh、PowerShell、CMD中常见的命令

Node.js 执行';mv';Bash、Zsh、PowerShell、CMD中常见的命令,node.js,bash,powershell,cmd,zsh,Node.js,Bash,Powershell,Cmd,Zsh,我正在尝试使用node.js创建CLI,我有一些任务需要将文件夹从一个地方移动到另一个地方。因此,为了实现这一点,我使用了node.js的child\u进程。像这样: const{exec}=require(“子进程”); 函数移动文件夹(文件夹,目标){ 执行官( `mv${folder}${destination}`, (错误,标准输出,标准输出)=>{ 如果(错误){ 日志(“移动错误”); } 控制台日志(“移动成功”); } ); } 当我使用bash终端(gitbash或Linux

我正在尝试使用node.js创建CLI,我有一些任务需要将文件夹从一个地方移动到另一个地方。因此,为了实现这一点,我使用了node.js的
child\u进程
。像这样:

const{exec}=require(“子进程”);
函数移动文件夹(文件夹,目标){
执行官(
`mv${folder}${destination}`,
(错误,标准输出,标准输出)=>{
如果(错误){
日志(“移动错误”);
}
控制台日志(“移动成功”);
}
);
}
当我使用bash终端(gitbash或Linux)执行这段代码时,这段代码可以工作。但当我使用CMD或PowerShell执行它时,它会抛出一个错误

“mv”未被识别为内部或外部命令


我知道PowerShell和CMD有一个名为
move
的命令来实现这一点,这就是它抛出错误的原因。但是有没有一种方法(库或其他方法)可以在所有环境中执行这些类型的命令?(在Windows(CMD、PowerShell)、Linux(bash、zsh)、Mac OS(zsh)中)。我怎样才能做到这一点?。我们可以检测shell类型并执行不同的命令吗?

考虑让节点处理它,请参阅此线程:考虑使用它,可以为NoDE.js提供可移植的UNIX外壳命令(如加之其他),如果您不从Puthshell删除默认的别名列表,如果您在Windows上,您会发现
mv
别名为
Move Item
。在Linux上(可能在Mac OS上),它不会被别名,因为这会阻止本机
mv
命令。但是,在使用与其他环境中的命令匹配的别名时必须小心,因为别名扩展到的cmdlet可能(可能不会)与其他环境中的命令完全兼容。PowerShell 5.x中的“move-item”仅使用别名。在PopeShell内核中,别名被删除。我想在我之前的评论中强调的是,即使您可以通过Posishell调用NoDEJs,它也会使用<代码> CMD.exe < /C> >这是它在Windows上使用的默认shell。请参阅此线程:考虑使用它,可以为NoDE.js提供可移植的UNIX外壳命令(如加之其他)。如果您不从Puthshell删除默认的别名列表,您将发现,如果您在Windows上,则<代码> MV 被别名归于<代码>移动项< /代码>。在Linux上(可能在Mac OS上),它不会被别名,因为这会阻止本机
mv
命令。但是,在使用与其他环境中的命令匹配的别名时必须小心,因为别名扩展到的cmdlet可能(可能不会)与其他环境中的命令完全兼容。PowerShell 5.x中的“move-item”仅使用别名。在PowerShell core中,别名已被删除。我想我在之前的评论中要强调的是,即使您可能通过PowerShell调用nodejs,它也将使用
cmd.exe
,因为这是它在Windows上使用的默认shell。