如何将 PATH 环境变量项替换为用双引号括住那些有空格的项?

如何将 PATH 环境变量项替换为用双引号括住那些有空格的项?

我正在寻找一个可以在 Windows 10 命令 shell ( cmd) 中或在powershellWindowsgit-bash中执行的短命令,它将替换PATH Environment variable用双引号括住带有空格的项目?

我面临的实际问题是,当我在 git-bash 中输入命令时

$ sfdx force:org:create -s -f config/project-scratch-def.json -a "default scratch org"

我收到错误

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

在此处输入图片描述 我认为发生此错误是因为sfdx工具位于“C:\Program Files\Salesforce CLI\bin”中,如果我没错的话,它应该在路径中被双引号引起来。

所以当我执行path命令时cmd我看到

D:\Git\SFDX\MySFDXProject>path
PATH=C:\Python27\;C:\Ruby23\bin;C:\Program Files\Salesforce CLI\bin

所以我猜C:\Program Files\Salesforce CLI\bin应该在路径中用双引号引起来,但我想对路径中有空格的任何路径项进行批量双引号,以便任何其他命令都不会失败。

因此,如果我的路径是,C:\Python27\;C:\Ruby23\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Salesforce CLI\bin我希望它通过命令转换为C:\Python27\;C:\Ruby23\bin;"C:\Program Files\Microsoft VS Code\bin";"C:\Program Files\Salesforce CLI\bin" 并保存在 PATH 环境变量中。

我怎么做?

答案1

创建一个文件,改变路径,创建一个子进程,sfdx在子进程中调用命令,并打印出结果。例如:

// env-change.js
process.env.path=process.env.path.replace(/Program Files/g,'"Program Files"');
const { exec } = require('child_process');

function result(err, stdout, stderr){
  if (err) {
    console.error(err);
    return;
  }
  console.log(stdout);
  console.log(process.env.path);
}

exec('sfdx force:org:create -s -f config/project-scratch-def.json -a "default scratch org"', result);

然后像这样运行它:

node env-change.js

参考

相关内容