Lan*_*ard 28 windows command-line environment-variables windows-8
我的主文件夹中有一个目录,我在其中放置了命令行软件 (CMD_Software)。为了避免混乱,我将每个软件放在 CMD_Software 中自己的目录中。
我想在我的 PATH 变量中创建一个条目,该条目将允许从命令行访问 CMD_Software 及其包含的所有目录。
我试过了,C:\Users\myuser\CMD_Software\*但什么也没做。这就是我没有想法的时候。
请注意,我不是在终端中尝试设置新路径,而是尝试在系统属性的“高级”选项卡上的“环境变量”中设置新路径。
efo*_*nis 22
PATH 变量不支持通配符或递归。这是设计使然。
我有时使用了两种可能的解决方法:
创建一个包含简单批处理文件的目录并将该目录添加到 PATH。每个批处理文件都可以启动你想要的程序,例如:
:: CMD_Software.bat: start CMD_Software
@C:\Users\myuser\CMD_Software\CMD_Software.exe %*
Run Code Online (Sandbox Code Playgroud)
第一行是注释,第二行开始是@为了避免显示正在运行的命令,并%*用于将任何命令行参数传递给 EXE。
给 CMD.EXE 添加别名:
DOSKEY CMD_Software="C:\Users\myuser\CMD_Software\CMD_Software.exe" $*
Run Code Online (Sandbox Code Playgroud)
这实质上将CMD_Software命令提示符中的等号后的所有内容转换为所有内容。将$*被替换为所提供的参数。
我更喜欢第二种方法,因为您可以将所有别名组合在一个文件中(请参阅 DOSKEY /? 中的“/MACROFILE”开关),并在命令解释器开始使用注册表设置时让它自动运行(请参阅CMD /?)。
第二种方法的一个缺点是别名只能在命令行的开头起作用。如果您想链接命令,这可能是一个问题。例如,CLS & CMD_Software除非您使用括号将别名放在单独的行中,否则将不起作用:
CLS & (
CMD_Software
)
Run Code Online (Sandbox Code Playgroud)
每当这成为一个问题时,我只是回退到批处理文件方法。
这就是我用来解决问题的方法。复制下面的脚本并将其保存到FIXPATH.BAT您已添加到环境变量中的文件夹中PATH。例如:
C:\Users\myuser\CMD_Software\
现在,每当您需要运行子文件夹中的程序时,比如说......
C:\Users\myuser\CMD_Software\unixutils\grep.exe 或者 C:\Users\myuser\CMD_Software\imagetools\exiftool.exe
首先运行fixpath然后输入命令(例如grep或exiftool),如下所示:
微软Windows [版本6.3.9600] (c) 2013 微软公司。版权所有。 C:\Users\myuser>修复路径 C:\Users\myuser>exiftool
FIXPATH.BAT
setlocal 启用延迟扩展
cd /D %~dp0
对于 (.) 中的 /R %%d 执行 (
设置“dirs=!dirs!;%%d”
)
路径=%路径%!目录!
(最终本地
设置“ret=%PATH%”
)
cmd /K "标题 [#] 路径固定 [#] && 路径 %ret%"
退出/B
感谢@VonC的回答
Lee*_*son -2
如果您不介意这个想法,您可以将命令行工具复制到 Windows\System32 目录。然后您可以从任何目录运行它们,就像 ping 或 ipconfig 一样。
编辑
经过一番修改,这是可能的。您只需使用分号来分隔目录即可。假设您在“folder1”和“folder2”中有一个程序。你可以这样写你的路径:
c:\folder1\;c:\folder2\;c:\folder3\; etc....
Run Code Online (Sandbox Code Playgroud)
然后您可以直接从命令行调用任一目录中的程序。AFAIK 没有其他方法可以仅用一行来完成此操作。
支持信息: http: //en.wikipedia.org/wiki/PATH_(变量)
| 归档时间: |
|
| 查看次数: |
30187 次 |
| 最近记录: |