1
votes

Barre oblique au lieu de retour dans le chemin du fichier

Comment remplacer les barres obliques inverses par des barres obliques dans l'argument de la tâche de génération de Visual Studio Code.

J'ai essayé d'utiliser des barres obliques inverses dans ma commande Bash, mais la console supprime simplement les barres obliques.

> Executing task: xxxxxxxx.exe --dir=C:/Users/User/Desktop/Project/

Dans la console, il semble être:

> Executing task: xxxxxxxx.exe --dir=C:UsersUserDesktopProject

Mais je veux que ce soit:

"command": "xxxxxxxx.exe",
"type": "shell",
"args": [
    "--dir=${workspaceFolder}",
]


3 commentaires

quelle est la variable workspaceFolder? Est-il géré par vscode?


Oui, il est géré par VSCode. C'est une variable prédéfinie, veuillez lire cet article .


Le programme ne peut pas analyser un chemin relatif, il doit donc utiliser le chemin complet.


3 Réponses :


1
votes

Avez-vous doublé les contre-obliques? Il s'agit d'un caractère de guillemet, vous devrez donc probablement en utiliser un pour citer le suivant.

$: x="C:\Users\Public"
$: echo "${x//\\/\/}"
C:/Users/Public

Utiliser l'expansion des paramètres sans générer un sed -

$: echo "C:\Users\Public" | sed 's,\\,/,g'
C:/Users/Public


6 commentaires

Merci, mais je ne peux pas le faire fonctionner. Il s'exécute comme: > Execution task: xxxxxxxx.exe --dir = $ {workspaceFolder // \ //} , et le $ {workspaceFolder // \ //} n'est pas remplacé par C: / Users / User .


Pas $ {workspaceFolder // \ //} - c.f. // pour dire "remplacer ceci sur toute la chaîne", \ / pour dire remplacer "littéralement une barre oblique", puis / pour "with:" ... alors vous ne lui donnez pas de motif de remplacement. Utilisez $ {workspaceFolder // \\ / \ /} "pour que \` signifie littéralement une barre oblique inverse ", puis / est" avec: "un \ / , "littéralement une barre oblique.


C'est le "syndrome du cure-dent penché", c'est pourquoi j'ai utilisé des commandes dans le modèle sed . :(


Une barre oblique inverse cite le caractère suivant, que nous utilisons à la fois pour citer la barre oblique inversée que nous voulons remplacer et pour citer la barre oblique que nous voulons comme modèle de remplacement.


Wow, cela a fonctionné. Je ne peux pas croire que j'ai raté ça.


J'ai fait pire, récemment, dans une réponse, lol ... ne te sens pas mal.



2
votes

Quelque chose utilisant bash intégré ${variable//string/substitution}:

"command": "xxxxxxxx.exe",
"type": "shell",
"args": [
    "--dir=${workspaceFolder//\\/\/}",
]


0 commentaires

2
votes

Quant à moi, il suffit de passer le shell par défaut à cmd a fait le travail. J'ai installé git-bash comme shell par défaut dans vscode . Quand j'ai essayé de déboguer le fichier ts, le shell s'est plaint quelque chose comme votre cas, le chemin est une chaîne sans barre oblique ni barre oblique inverse.

Ceci est mon launch.json.

{
    {
      "type": "node",
      "request": "launch",
      "name": "Debug Current",
      "preLaunchTask": "tsc: build - tsconfig.json",
      "skipFiles": ["<node_internals>/**"],
      "program": "${file}",
      "outFiles": ["${workspaceFolder}/dist/*.js"]
    }
  ]
}


0 commentaires