Je suis nouveau dans l'écriture de scénario et je ne parviens pas à faire fonctionner celui-ci. Je pourrais le faire si je déplaçais les fichiers vers un chemin sans espace, mais j'aimerais que cela fonctionne avec cet espace s'il le pouvait.
Je souhaite extraire un ensemble de mises à jour Office dans un dossier contenant un fichier .cmd. Pour que le fichier de commandes puisse être utilisé sur n’importe quel ordinateur, j’ai défini une variable de chemin que je ne dois modifier qu’à un endroit donné pour l’exécuter sur une autre machine. Le problème est que le chemin contient un espace. Si je mets des guillemets autour du chemin dans la définition, cmd.exe les met autour du chemin avant d'ajouter le nom de fichier et les commutateurs et que le lot échoue avec une "erreur de syntaxe de ligne de commande". Sans guillemets, il échoue avec, "n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes."
Pour tester, j'utilise le commutateur d'aide jusqu'à ou si je peux le faire fonctionner. Je peux le faire en utilisant un nom de fichier/dossier 8.3 (par exemple, Mes documents en tant que MyDocu ~ 1), mais cela peut-il être fait différemment?
Essayez quelque chose comme ça:
SET MY_PATH=C:\Folder with a space
"%MY_PATH%\MyProgram.exe" /switch1 /switch2
J'utilise
set "VAR_NAME=<String With Spaces>"
lors de la mise à jour du chemin:
set "PATH=%UTIL_DIR%;%PATH%"
Il y a deux options ici. Tout d'abord, vous pouvez stocker le chemin non-cité et le citer plus tard:
set MyPath=C:\Program Files\Foo
"%MyPath%\foo with spaces.exe" something
Une autre option que vous pouvez utiliser est un sous-programme qui permet de ne pas faire de guillemets (mais dans ce cas, ce n’est pas une très bonne idée puisque vous ajoutez des guillemets, que vous les supprimez et que vous les rajoutez à nouveau sans avantage):
set MyPath="C:\Program Files\Foo"
call :foo %MyPath%
goto :eof
:foo
"%~1\foo.exe"
goto :eof
Le %~1
supprime les guillemets autour de l'argument. Cela est pratique pour passer des noms de dossiers cités, mais, comme indiqué précédemment, dans ce cas particulier, ce n'est pas la meilleure idée :-)
Essaye ça;
créer une variable comme ci-dessous
SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
Puis remplacez le chemin par variable. Assurez-vous d'ajouter des guillemets pour les débuts et les fins
vstest.console.exe "%SolutionDir%\Automation.Specs.dll"
Je place toujours le chemin entre guillemets lorsque je crée un fichier .bat. (Je viens d'ajouter la pause afin qu'elle ne ferme pas l'écran.)
Par exemple:
"C:\Program Files\PageTech\PCLReader64_131\PCLReader64.exe"
PAUSE
La bonne façon de faire est la suivante:
@ECHO off
SET MY_PATH=M:\Dir\^
With Spaces\Sub Folder^
\Dir\Folder
:: calls M:\Dir\With Spaces\Sub Folder\Dir\Folder\hello.bat
CALL "%MY_PATH%\hello.bat"
pause
Le moyen le plus simple de résoudre ce problème consiste à mettre le nom du dossier entre guillemets:
(cd\New Folder\...) --> (cd\"New Folder"\...)
J'espère que cela aide.
Si vous devez stocker le chemin permanent (le chemin n'est pas modifié lorsque cmd est redémarré)
Exécutez l'invite de commande en tant qu'administrateur (cliquez avec le bouton droit de la souris sur cmd.exe et sélectionnez Exécuter en tant qu'administrateur).
Dans cmd setx path "%path%;your new path"
puis entrez
Vérifiez si le chemin est pris correctement en tapant chemin et en appuyant sur entrée.