Aqui estão os comandos no meu arquivo de lotesetpath.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
Cada vez que executo este lote em cmd.exe no meu windows 10, recebo este erro
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' is not recognized as an internal or external command,
operable program or batch file.
Estou ciente de que set
modifica os valores de ambiente do shell atual (da janela), e a alteração está disponível imediatamente, mas é temporária; while setx
modifica o valor permanentemente, o que afeta todos os shells futuros, mas não modifica o ambiente dos shells já em execução.
Gostaria apenas de saber se posso atribuir valor ao valor de ambiente %path% no Windows 10, para que eu possa executar algum comando dentro do shell imediatamente.
Aqui está outra experiência com estes comandos
echo %path%
set workdir="%cd%"
timeout 30
set path="C:\Windows\system32;"
echo %path%
timeout 30
C:\Windows\system32\timeout 30
e esta saída
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' is not recognized as an internal or external command,
operable program or batch file.
E:\>C:\Windows\system32\timeout 30
Waiting for 29 seconds, press a key to continue ...
E:\>
o que significa que o shell atual não pode encontrar o timeout.exe, mesmo que haja apenas um valor para a variável %path%, chamá-lo pelo caminho completo funciona bem.
Eu fiz muitos outros experimentos, incluindo set path="%workdir%;%path%"
, nenhum deles funciona.
Você tem "" em seu caminho. Eles não devem ser adicionados.
Tentar
Além disso, por que não mudar de caminho assim?
que garante que seu caminho mantenha todas as configurações de caminho originais e adicione apenas o que você deseja adicionar ...
Você pode estar considerando também usar
setlocal
eendlocal
Inicia a localização de variáveis de ambiente em um arquivo em lotes. A localização continua até que um comando endlocal correspondente seja encontrado ou o final do arquivo em lote seja alcançado. *
Observações
Se você usar setlocal fora de um script ou arquivo em lote, ele não terá efeito. Use setlocal para alterar as variáveis de ambiente ao executar um arquivo em lotes. As alterações de ambiente feitas após a execução de setlocal são locais para o arquivo em lotes. O programa Cmd.exe restaura as configurações anteriores quando encontra um comando endlocal ou atinge o final do arquivo em lotes.
Você pode ter mais de um comando setlocal ou endlocal em um programa em lote (ou seja, comandos aninhados).
""
em seuset "path=....strings;strings;..."
único :