Voici les commandes dans mon fichier batch setpath.bat
set workdir="%cd%"
timeout 30
set path="C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;"
timeout 30
Chaque fois que j'exécute ce batch dans cmd.exe sur mon windows 10, je reçois cette erreur
E:\>setpath.bat
E:\>set workdir="E:\"
E:\>timeout 30
Waiting for 29 seconds, press a key to continue ...
E:\>set path="C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;"
E:\>timeout 30
'timeout' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
Je suis conscient que set
modifie les valeurs d'environnement de la coque actuelle (la fenêtre) et que le changement est immédiatement disponible, mais temporaire ; alors que setx
modifie la valeur de manière permanente, ce qui affecte toutes les coques futures mais ne modifie pas l'environnement des coques déjà exécutées.
J'aimerais juste savoir si je peux attribuer une valeur à la valeur d'environnement %path% sur Windows 10, afin de pouvoir exécuter une commande à l'intérieur de la coque immédiatement.
Voici une autre expérience avec ces commandes
echo %path%
set workdir="%cd%"
timeout 30
set path="C:\Windows\system32;"
echo %path%
timeout 30
C:\Windows\system32\timeout 30
et cette sortie
E:\>setpath.bat
E:\>echo E:\Miniconda3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\Miniconda3;E:\Miniconda3\Scripts;E:\Miniconda3\Library\bin;C:\Users\AlbertD\AppData\Local\Microsoft\WindowsApps;e:\Program Files\JetBrains\PyCharm Community Edition 2020.3\bin
E:\Miniconda3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\Miniconda3;E:\Miniconda3\Scripts;E:\Miniconda3\Library\bin;C:\Users\AlbertD\AppData\Local\Microsoft\WindowsApps;e:\Program Files\JetBrains\PyCharm Community Edition 2020.3\bin
E:\>set workdir="E:\"
E:\>timeout 30
Waiting for 30 seconds, press a key to continue ...
E:\>set path="C:\Windows\system32;"
E:\>echo "C:\Windows\system32;"
"C:\Windows\system32;"
E:\>timeout 30
'timeout' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
E:\>C:\Windows\system32\timeout 30
Waiting for 29 seconds, press a key to continue ...
E:\>
ce qui signifie que la coque actuelle ne peut pas trouver timeout.exe même s'il n'y a qu'une seule valeur pour la variable %path%, cependant, l'appeler par le chemin complet fonctionne bien.
J'ai fait beaucoup d'autres expériences, y compris set path="%workdir%;%path%"
, aucun d'entre eux ne fonctionne.
0 votes
@Ramhound Ce que j'essaie de définir est exactement la même valeur que celle d'origine dans le système.
0 votes
@Ramhound non, ce sont les guillemets. Ils ne devraient pas être là. Path le traite littéralement, donc il définit la première entrée sur "C:\windows\system32, ce qui n'existe bien sûr pas. Puisque timeout.exe se trouve dans c:\windows\system32, ce chemin est exclu et donc la commande n'est pas trouvée.
0 votes
@LPChip - Ma prochaine suggestion aurait été d'utiliser
where timeout
, cela aurait échoué pour les raisons que vous avez décrites, ce qui aurait clairement indiqué que c'étaient les guillemets. Je savais que quelque chose n'allait pas, mais je ne pouvais pas l'identifier.0 votes
@Ramhound oui... J'ai copié son script dans mon invite de commandes et j'ai entré où le délai d'attente pour en venir à cette conclusion moi-même. :)