Як замінити елементи змінної середовища 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.