赞
踩
- C:\Users\Administrator>set /?
- 显示、设置或删除 cmd.exe 环境变量。
-
- SET [variable=[string]]
-
- variable 指定环境变量名。
- string 指定要指派给变量的一系列字符串。
-
- 要显示当前环境变量,键入不带参数的 SET。
-
- 如果命令扩展被启用,SET 会如下改变:
-
- 可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
- SET 命令已使用的名称的所有变量的值。例如:
-
- SET P
-
- 会显示所有以字母 P 打头的变量
-
- 如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL
- 设置成 1。
-
- SET 命令不允许变量名含有等号。
-
- 在 SET 命令中添加了两个新命令行开关:
-
- SET /A expression
- SET /P variable=[promptString]
-
- 请按任意键继续. . .
显示指定Windows环境变量:set %name%或echo %name%。注意name的前后都要加百分号%。
- C:\Users\Administrator>echo %PATH%
- C:\CUDA_win10\CUDA11.1\cuda1\bin;C:\CUDA_win10\CUDA11.1\cuda1\libnvvp;D:\Program Files\ffmpeg-4.4-essentials_build\ffmpeg-4.4-essentials_build\bin;D:\ProgramData\Anaconda3;D:\ProgramData\Anaconda3\Library\mingw-w64\bin;D:\ProgramData\Anaconda3\Library\usr\bin;D:\ProgramData\Anaconda3\Library\bin;D:\ProgramData\Anaconda3\Scripts;D:\Program Files\Python\Python38\Scripts\;D:\Program Files\Python\Python38\;D:\Program Files\python\venv38\py-cv-learning\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;D:\Program Files\MATLAB2017b\runtime\win64;D:\Program Files\MATLAB2017b\bin;C:\Program Files\dotnet\;D:\texlive\2021\bin\win32;D:\Users\Administrator\AppData\Local\SumatraPDF;D:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\NVSMI;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\NVIDIA Corporation\Nsight Compute 2022.1.1\;D:\Program Files\python\python37\Scripts\;D:\Program Files\python\python37\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;D:\Program Files\JetBrains\PyCharm Community Edition 2021.3.1\bin;;D:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin
-
- C:\Users\Administrator>set %PATH%
- 环境变量 C:\CUDA_win10\CUDA11.1\cuda1\bin;C:\CUDA_win10\CUDA11.1\cuda1\libnvvp;D:\Program Files\ffmpeg-4.4-essentials_build\ffmpeg-4.4-essentials_build\bin;D:\ProgramData\Anaconda3;D:\ProgramData\Anaconda3\Library\mingw-w64\bin;D:\ProgramData\Anaconda3\Library\usr\bin;D:\ProgramData\Anaconda3\Library\bin;D:\ProgramData\Anaconda3\Scripts;D:\Program Files\Python\Python38\Scripts\;D:\Program Files\Python\Python38\;D:\Program Files\python\venv38\py-cv-learning\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;D:\Program Files\MATLAB2017b\runtime\win64;D:\Program Files\MATLAB2017b\bin;C:\Program Files\dotnet\;D:\texlive\2021\bin\win32;D:\Users\Administrator\AppData\Local\SumatraPDF;D:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\NVSMI;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\NVIDIA Corporation\Nsight Compute 2022.1.1\;D:\Program Files\python\python37\Scripts\;D:\Program Files\python\python37\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;D:\Program Files\JetBrains\PyCharm Community Edition 2021.3.1\bin;;D:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin 没有定义
在Linux系统中,要想显示所有或指定变量,需要用到export、env、echo指令。
- 显示所有linux环境变量:export或env
- 显示/查看指定linux环境变量:export name或echo name
新建Windows环境变量(仅在当前窗口有效):set name=constant。在cmd窗口中用set指令创建的变量,只能在当前窗口中使用,也即再重新打开一个cmd窗口时是不存在这个变量的。
表达式结果作为环境变量的值:【set /a name=expression】,也即在上面的基础上加一个参数/a。
之所以需要加参数/a,是因为如果不加,就会将value部分识别成纯字符串传入变量name。
加了参数/a后,如下图所示,表达式才被运算至变量。
人工手动输入的值传入环境变量:【set /p name=提示信息】 ,同上,如果不加参数/p,就会导致提示信息被当做纯字符串被传入变量name。
上面这张图,我误使用了重定向符号>(如果不懂,往后看到2.10就知道了),导致生成了下面的文件。
清除指定环境变量:【set %name%=】,等于号后面无任何值。
- C:\Users\Administrator>path /?
- 为可执行文件显示或设置一个搜索路径。
-
- PATH [[drive:]path[;...][;%PATH%]
- PATH ;
-
- 键入 PATH ; 清除所有搜索路径设置并指示 cmd.exe 只在当前
- 目录中搜索。
- 键入 PATH 但不加参数,显示当前路径。
- 将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置。
-
- C:\Users\Administrator>
执行【path ;】后,再打印所有搜索路径,发现为空(null)。
同理,这里也只是在当前cmd窗口中清空,不代表磁盘中存储的path搜索路径被更改了。
一旦清空,cmd在搜索程序或命令时,只会在当前目录搜索。
因此,清空命令可以起到操纵搜索顺序的作用。
在5.3小节我们把所有的搜索路径全删了,现在我们尝试加一条进去。
可以执行命令【Path new_path %PATH%】,new_path为包含完整的驱动器和文件夹的绝对路径名,而%PATH%表示将新建路径附着在原有路径上。
注意%Path%区分大小写,不能用%path%。
同理,添加的路径也是临时有效。
直接在cmd命令行窗口输入【where】命令或者输入【where /?】然后回车,就会显示所有与where有关的帮助信息。
讲解where命令的各种参数之前,先不带参数讲解,渐进式学习+深入浅出。
where命令可以用来显示某一个可执行程序的路径,比如输入where cmd回车,就会输出C:\Windows\System32\cmd.exe,再比如输入where help回车,就会输出help.exe的路径。
输出路径在上的,优先级更高,也即执行指令时更优先执行处于最顶上面的路径中的文件。
本人曾经在pycharm的terminal中打开powershell环境,然后输入几次where都没弹出新信息,后来估计是shell中没这个命令,因此一定要确保是在cmd中运行该命令。
(1)通配符*用来代替多个任意字符
例如执行命令【where py*】,不仅会把python.exe搜出来,也会把pylupdate、pycc这种文件搜出来。
(2)通配符?用来代替一个任意字符
例如执行命令【where pyth?n】,也可以搜出python.exe程序出来。
执行命令【where *bat *exe】,输出结果如下图所示,一大堆bat文件和exe文件都被搜出来了。
命令中排在偏左边的pattern搜索优先级更高,因此输出的结果是先bat文件、后exe文件。
上面只用2个pattern,实际可以是n个,哈哈哈是不是很富足?
这个参数是我见过最没用的参数,因为带上后,输出不了任何东西,唯一能反映出来的信息是errorlevel,后面还要用echo打印出来。
执行命令【where /Q python】,发现这时候的where程序就是“高冷派”(开启了安静模式,quiet),跟他说话不鸟你,嗐!
不甘心,我看看能不能重定向到日志文件中,于是我又执行命令 【where /Q python>log.txt】。情况如下图
最后,正当我彻底绝望时,脑海中突然忆起往事——where命令也有错误回馈机制,在帮助信息里提到过这一点。
如果搜索成功,此工具返回错误级别 0; 如果不成功,返回 1; 如果失败或发生错误,返回 2。
当我故意执行命令【where /Q pytho123141】时,我知道它搜不出来,也就是不成功情况的错误级别1。
当我故意执行命令【where /Q python】时,我知道它搜得到,也就是成功情况的错误级别0。
错误级别数值越高,当然也就越来越错、越“错”越勇啦。
因此,这个/Q参数也不全无用。
当在bat脚本文件中编写dos命令时,或许会用到这个。
因为不需要输出搜索结果时,仅仅需要知道是否能搜到时,然后根据是否能搜到来决定后续程序的执行方向,就可以用这个参数。
因为涉及到路径空格问题,所以在这里遇到一些小错误,难以解决。
不过当路径上没有空格时,执行都挺顺利的!
执行命令【where /r C:\Users\Administrator\ python】
相对路径就是正常的,不管引号起在路径的局部还是路径的全部。
执行命令【where /r "Program Files"\python\Python38 python】
执行命令【where /r "Program Files\python\Python38" python】
执行命令 【where /r D:\"Program Files"\python\Python38 python】
执行命令 【where /r "D:\Program Files\python\Python38" python】
文件夹映射成虚拟磁盘,执行命令【subst w: "D:\Program Files"】,创建了一个虚拟磁盘w。
再执行命令【where /r W:\python\Python38 python】 ,搜索成功。
先设置目录变量(执行命令set dir1=Program Files),然后再将变量代入路径中(执行命令where /r D:\%dir1%\python\Python38 python),也失败了。
执行命令【where /r d:\Progra~1\python\Python38 python】
讲真这个波浪线加数字是什么意思我到现在还不明白,不过网上有很多文章都在建议用这个方法来避免路径空格问题出错。
路径输出的先后顺序代表优先级顺序,也代表cmd命令行窗口搜索指令/程序的顺序,因此只要学会cmd命令行窗口默认的搜索顺序是怎样,以及如何更改这些设置就ok。
具体细节参见本人曾写的一篇文章▼▼▼▼▼
如何调整Cmd命令行窗口搜索的顺序?cmd命令行窗口工作原理
对于有些开发者,比如python开发者,一台电脑同时安装python2.x和python3.x,这时候python命令打开的版本当然是路径优先级更高的一个版本了。当python2.x的优先级在3.x之上时,也就是在用2.x的环境做开发。因此开发者可能经常需要调整它们之间的优先级,从而在一台电脑上完成不同python环境的开发。
如何更改环境变量的Path优先级呢?
具体步骤如下图所示:环境变量——系统变量——Path——将对应路径目录向上移。
注意这里只是调整了系统变量的path搜索优先级,用户变量path也会被搜索,因此如果需要也可以进用户变量中的Path进行编辑调整。
用户变量优先级低于系统变量优先级,也就是说先按顺序搜完系统变量的Path(不搜索子目录,要是搜索不累死了?)中有没有对应的可执行文件(exe),如果没有才会去用户变量的Path搜索。
类似python -V和pip install numpy这种命令,其实是先执行python然后再执行-V,pip同理;它们都是从属python命令、pip命令下的,而不是Cmd下的命令。如何获取和python、pip可执行程序有关的命令呢?详见本文的第三部分。
详见本文的6.4章节。
主要是用好引号,其次可以尝试用磁盘映射,最后可以尝试一下相对路径。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。