我正在寻找一个可以在 Windows 10 命令 shell ( cmd
) 中或在powershell
Windowsgit-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
参考