Як замінити елементи змінної середовища PATH на подвійну цитату тих, які мають пробіли?


1

Я шукаю коротку команду, яку я можу виконати в командній оболонці Windows 10 ( cmd ) або в powershell або в git-bash для Windows, який замінить 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.

enter image description here Я думаю, що ця помилка відбувається тому, що sfdx Інструмент розташований у "C: Program Files - Salesforce CLI", і, мабуть, він повинен бути подвійним, якщо я не помиляюся.

Тому, коли я виконую 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.

Як це зробити?


PATH використовує крапку з комою як розділювачі, тому лапки не потрібні. Моя PATH заповнена великою кількістю папок, які містять пробіли. Я думаю, що існує інша змінна середовища, яка потребує лапок. Я не знайомий з тим, що таке "sfdx", тому я не можу допомогти додатково визначити вашу проблему.
Bill Hileman

У вашій системній змінній є синтаксична помилка. Щоб визначити, який шлях викликає проблему. Відновити значення системної змінної за промовчанням, і один за одним додати додаткові шляхи, які вам потрібні. Переконайтеся, що ви не досягаєте обмеження довжини для змінної.
Ramhound

Білл має рацію. Це може бути щось, що робить ваша команда sfdx. Також див developer.salesforce.com/forums/?id=9060G0000005b4zQAA він каже, щоб спробувати $sfdx force:org:create -f project-scratch-def.json -a MyScratchOrg<ENTER>
barlop

bash не використовує той самий формат шляху, що й Windows. Подивитися stackoverflow.com/questions/13701218/…
DavidPostill

Добре, коли я запускаю цю команду в командному рядку за замовчуванням "CMD", вона працює, але коли я запускаю цю команду в оболонці вікна "git bash", вона не працює. Отже, якщо я маю кожен член пункту шляху подвійного цитування, він повинен був працювати
Patlatus

Відповіді:


0

Створити файл, який змінює шлях, створює дочірній процес, викликає 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

Список літератури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.